home *** CD-ROM | disk | FTP | other *** search
- Path: news.larc.nasa.gov!amiga-request
- From: amiga-request@ab20.larc.nasa.gov (Amiga Sources/Binaries Moderator)
- Subject: v91i066: Bigbrother 2.11 - virus infection detector and more, Part01/01
- Reply-To: E. van Breemen <breemen@rulcvx.uucp>
- Newsgroups: comp.sources.amiga
- Message-ID: <comp.sources.amiga:v91i066@ab20.larc.nasa.gov>
- Date: 20 Mar 91 14:22:26 GMT
- Approved: tadguy@uunet.UU.NET (Tad Guy)
- X-Mail-Submissions-To: amiga@uunet.uu.net
- X-Post-Discussions-To: comp.sys.amiga.misc
-
- Submitted-by: E. van Breemen <breemen@rulcvx.uucp>
- Posting-number: Volume 91, Issue 066
- Archive-name: utilities/bigbrother2.11/part01
-
- [ includes uuencoded executable ...tad ]
-
- Bigbrother is a virus infection detection program with some optional
- utilities. It is running as a normal task and checks every 1 second
- the important memory locations in the Amiga. Depending on the values
- and the their combinations, an expert system will accept it or warn
- you in case it thinks it is dangerous. This means that no program
- can start a virus in memory without alerting Bigbrother.
- As a bonus, Bigbrother is capable of starting a new shell, starting
- script files, viewing and installing bootblocks. All this in a
- program less than 10K.
-
- #!/bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 1 (of 1)."
- # Contents: F2 F3 bigbrother.asm bigbrother.doc bigbrother.uu bighelp
- # readme
- # Wrapped by tadguy@ab20 on Wed Mar 20 09:22:24 1991
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'F2' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'F2'\"
- else
- echo shar: Extracting \"'F2'\" \(6 characters\)
- sed "s/^X//" >'F2' <<'END_OF_FILE'
- Xxoper
- END_OF_FILE
- if test 6 -ne `wc -c <'F2'`; then
- echo shar: \"'F2'\" unpacked with wrong size!
- fi
- # end of 'F2'
- fi
- if test -f 'F3' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'F3'\"
- else
- echo shar: Extracting \"'F3'\" \(5 characters\)
- sed "s/^X//" >'F3' <<'END_OF_FILE'
- Xvex
- X
- END_OF_FILE
- if test 5 -ne `wc -c <'F3'`; then
- echo shar: \"'F3'\" unpacked with wrong size!
- fi
- # end of 'F3'
- fi
- if test -f 'bigbrother.asm' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'bigbrother.asm'\"
- else
- echo shar: Extracting \"'bigbrother.asm'\" \(42429 characters\)
- sed "s/^X//" >'bigbrother.asm' <<'END_OF_FILE'
- X;====================================================================
- X;= Big Brother V2.11 by The Orega Programming Group Holland (c)1989 =
- X;= Programmer: EA van Breemen =
- X;= Assembler : DevPac 2.14 =
- X;====================================================================
- X
- X;====================================================================
- X;= Modifications: =
- X;= 24-1-90: fixed ctrl-Help bug =
- X;= added newcli =
- X;= optimized coding =
- X;= 26-1-90: added newcli gadget =
- X;= modified tekstborder =
- X;= fixed 'system has been modified' tekst bug =
- X;= 27-1-90: fixed AlertWarning =
- X;= adjusted some windowsizes =
- X;= intuified viewbootblocktekst =
- X;= regulated bootio errors =
- X;= added help =
- X;= added preferences =
- X;= 21-10-90 fixed the memory clean message update bug =
- X;= added script options =
- X;= 23-10-90 make auto detaching =
- X;= 24-10-90 fixed another clean message box bug =
- X;= added ReBoot routine =
- X;= 25-10-90 BigBrother is now using the official reboot =
- X;= 27-10-90 Fixed the endcli bug =
- X;= 01-12-90 Fixed multiple selection bug. BB replies to all =
- X;= messages first before next Wait =
- X;= Version 2.11 Final release. =
- X;====================================================================
- X
- X
- XXLIB macro
- X xref _LVO\1
- X endm
- X
- X
- XMEMORY equ $1
- XVIEW equ $2
- XCLEAR equ $3
- XINSTALL equ $4
- XDRIVE equ $5
- XWATCH equ $6
- XNEWSHELL equ $7
- XHELP equ $8
- XREBOOT equ $9
- X
- X
- XREAD equ $2
- XWRITE equ $3
- X
- X
- XIECLASS_RAWKEY equ $01
- XIEQUALIFIER_CONTROL equ $08
- X
- XHELP_KEY equ $5f
- XFUNC_F1 equ $50
- XFUNC_F2 equ $51
- XFUNC_F3 equ $52
- XFUNC_F4 equ $53
- XFUNC_F5 equ $54
- XFUNC_F6 equ $55
- XFUNC_F7 equ $56
- XFUNC_F8 equ $57
- XFUNC_F9 equ $58
- XFUNC_F10 equ $59
- X
- X
- X
- XIND_ADDHANDLER equ $09
- XNT_MESSAGE equ $05
- XNT_MSGPORT equ $04
- XPA_SIGNAL equ $00
- Xio_Message equ $00
- Xio_Data equ $28
- Xio_Command equ $1c
- XLn_Type equ $08
- XLn_Name equ $0a
- XLn_Pri equ $09
- Xmp_Node equ $00
- Xmp_SigBit equ $0f
- Xmp_Flags equ $0e
- Xmp_SigTask equ $10
- Xmn_Node equ $00
- Xmn_Length equ $12
- Xmn_ReplyPort equ $0e
- X
- Xgg_GadgetID equ $26
- X
- Xim_Class equ $14
- Xim_Code equ $18
- Xim_Address equ $1c
- X
- Xwd_UserPort equ $56
- Xwd_RPort equ $32
- X
- XWindowPtr equ $b8
- X
- Xis_Code equ $12
- Xis_Data equ $0e
- Xis_Node equ $00
- X
- XGADGETUP equ $40
- XGADGHNONE equ $03
- XCLOSEWINDOW equ $200
- XWINDOWDRAG equ $02
- XWINDOWDEPTH equ $04
- XWINDOWCLOSE equ $08
- XACTIVATE equ $1000
- XNOCAREREFRESH equ $20000
- XWBENCHSCREEN equ $01
- XRELVERIFY equ $01
- XBOOLGADGET equ $01
- XRP_JAM1 equ $00
- XRP_JAM2 equ $01
- X
- XTD_CHANGESTATE equ 14
- X
- XNULL equ $00
- X
- XMAGIC_ROMEND EQU $01000000 ;End of Kickstart ROM
- XMAGIC_SIZEOFFSET EQU -$14 ;Offset from end of ROM to Kickstart size
- XV36_EXEC EQU 36 ;Exec with the ColdReboot() function
- XTEMP_ColdReboot EQU -726 ;Offset of the V36 ColdReboot function
- XLIB_VERSION EQU $14
- X
- X
- X XLIB OpenLibrary
- X XLIB CloseLibrary
- X XLIB OpenDevice
- X XLIB CloseDevice
- X XLIB OpenWindow
- X XLIB CloseWindow
- X XLIB DoIO
- X XLIB Delay
- X XLIB GetMsg
- X XLIB ReplyMsg
- X XLIB AllocSignal
- X XLIB FreeSignal
- X XLIB FindTask
- X XLIB AddPort
- X XLIB RemPort
- X XLIB FindName
- X XLIB DeviceProc
- X XLIB RefreshGadgets
- X XLIB Wait
- X XLIB Move
- X XLIB Text
- X XLIB SetAPen
- X XLIB AllocMem
- X XLIB FreeMem
- X XLIB SetWindowTitles
- X XLIB FindResident
- X XLIB RemTask
- X XLIB DisplayBeep
- X XLIB Disable
- X XLIB Enable
- X XLIB DrawBorder
- X XLIB PrintIText
- X XLIB WBenchToFront
- X XLIB DisplayAlert
- X XLIB SizeWindow
- X XLIB WaitPort
- X XLIB Open
- X XLIB Close
- X XLIB Read
- X XLIB Lock
- X XLIB UnLock
- X XLIB Execute
- X XLIB CreateProc
- X XLIB WaitPort
- X XLIB Supervisor
- X XLIB Write
- X XLIB Output
- X
- X_ASyncRun equ -$222
- XSTACK_SIZE equ 4096
- X
- X
- X
- X;===================================
- X;= Startup code for auto detaching =
- X;= BigBrother V2.11 =
- X;===================================
- X
- X
- X section "Startup",code
- X
- Xstart move.l $4,a6
- X sub.l a1,a1
- X jsr _LVOFindTask(a6)
- X move.l d0,a4
- X tst.l $ac(a4) ; Are we from the WBench ????
- X bne.s from_cli
- X lea.l $5c(a4),a0
- X jsr _LVOWaitPort(a6)
- X jsr _LVOGetMsg(a6) ; Get message
- Xfrom_cli:
- X move.l $4,a6
- X lea.l DosName,a1
- X clr.l d0
- X jsr _LVOOpenLibrary(a6)
- X move.l d0,a5
- X beq uit
- X move.l a5,a6
- X jsr _LVOOutput(a6)
- X move.l d0,d1
- X move.l #Title,d2
- X move.l #80,d3
- X jsr _LVOWrite(a6)
- X move.l #NIL_NAME,d1
- X move.l #1006,d2
- X jsr _LVOOpen(a6)
- X move.l d0,pcb_Input
- X move.l d0,pcb_Output
- X
- X
- X move.l $4,a6
- X lea.l ArpName,a1
- X clr.l d0
- X jsr _LVOOpenLibrary(a6)
- X move.l d0,ArpBase
- X bne 1$
- X bra 2$
- X1$ move.l ArpBase,a6
- X move.l #0,a0
- X move.l #0,a1
- X lea.l newshell2,a2
- X jsr _ASyncRun(a6)
- X move.l $4,a6
- X move.l ArpBase,a1
- X jsr _LVOCloseLibrary(a6) ; Close Arp
- X
- X lea.l start,a0
- X move.l #0,-4(a0) ; Erase pointer to next segment
- X
- X2$ move.l $4,a6
- X move.l a5,a1
- X jsr _LVOCloseLibrary(a6)
- X
- Xuit rts
- X
- X
- X
- X data
- X
- XTitle dc.b 'BigBrother V2.11 ',169,'1990 by EA van Breemen',10,13
- X dc.b 'The Orega Programming Group Holland.',10,13,0
- X
- X even
- X
- XNewWindowStructure1:
- X dc.w 62,30
- X dc.w 330,126
- X dc.b 0,1
- X dc.l GADGETUP+CLOSEWINDOW
- X dc.l WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE+NOCAREREFRESH
- X dc.l Gadget1
- X dc.l NULL
- X dc.l CopyrightName
- X dc.l NULL
- X dc.l NULL
- X dc.w 5,5
- X dc.w -1,-1
- X dc.w WBENCHSCREEN
- XNewWindowStructure2:
- X dc.w 0,0
- Xhsize dc.w 550,150
- X dc.b 0,1
- X dc.l CLOSEWINDOW
- X dc.l ACTIVATE+NOCAREREFRESH+WINDOWCLOSE
- X dc.l NULL
- X dc.l NULL
- Xtitle2 dc.l InitTitle
- X dc.l NULL
- X dc.l NULL
- X dc.w 5,5
- X dc.w -1,-1
- X dc.w WBENCHSCREEN
- XCopyrightName:
- X dc.b 'Big Brother V2.11',0
- X dc.b ' ',169,'1989/1990',0
- X cnop 0,2
- XInitTitle:
- X dc.b 'BootBlock:',0
- X even
- XViewTitle:
- X dc.b 'Contents of ExecBase:',0
- X even
- XInstallTitle:
- X dc.b 'Installing BootBlock',0
- X even
- XHelpTitle:
- X dc.b 'Help',0
- X even
- Xinstall_message:
- X dc.b 'Disk has been installed',0
- X even
- Xinstall_fail:
- X dc.b 'Install has failed',0
- X even
- Xdisk_protected:
- X dc.b 'Disk is write-protected!',0
- X even
- Xdisk_changed:
- X dc.b 'Disk has been removed!',0
- X even
- XStandardBootBlock:
- X dc.b 'Standard BootBlock by The Orega Programming Group Holland.'
- X dc.b ' Copyright 1989,1990. Installed by Big Brother V2.11'
- XStandardend:
- X even
- Xprefs_file:
- X dc.b 's:big_prefs',0
- X even
- XGadget1:
- X dc.l Gadget2
- X dc.w 29,22
- X dc.w 80,15
- X dc.w GADGHNONE
- X dc.w RELVERIFY
- X dc.w BOOLGADGET
- X dc.l Border1
- X dc.l NULL
- X dc.l IText1
- X dc.l NULL
- X dc.l NULL
- X dc.w DRIVE
- X dc.l NULL
- XBorder1:
- X dc.w 0,0
- X dc.b 2,0,RP_JAM2
- X dc.b 5
- X dc.l BorderVectors1
- X dc.l Border1a
- XBorder1a:
- X dc.w -1,-1
- X dc.b 1,0,RP_JAM1
- X dc.b 5
- X dc.l BorderVectors1
- X dc.l NULL
- XBorderVectors1:
- X dc.w 0,0
- X dc.w 80,0
- X dc.w 80,15
- X dc.w 0,15
- X dc.w 0,0
- X
- X;======== Custom Drawing =======================
- X
- XBorder2:
- X dc.w 30,96
- X dc.b 2,0,RP_JAM2
- X dc.b 5
- X dc.l BorderVectors2
- X dc.l Border3
- XBorder3:
- X dc.w 28,95
- X dc.b 1,0,RP_JAM1
- X dc.b 5
- X dc.l BorderVectors2
- X dc.l NULL
- XBorderVectors2: ; Tekstbox of mainwindow
- X dc.w 0,0
- X dc.w 283,0
- X dc.w 283,26
- X dc.w 0,26
- X dc.w 0,0
- XMyTekst:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 45,110
- X dc.l NULL
- XMt1 dc.l NULL
- X dc.l MyTekst2
- XMyTekst2:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 44,109
- X dc.l NULL
- XMt2 dc.l NULL
- X dc.l NULL
- XMyTekst3:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 45,100
- X dc.l NULL
- XMt3 dc.l NULL
- X dc.l MyTekst4
- XMyTekst4:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 44,99
- X dc.l NULL
- XMt4 dc.l NULL
- X dc.l NULL
- X
- X
- X;=====================================================
- X;= IntuiText structures for clearing the message box =
- X;=====================================================
- X
- XMyTekst3a:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 45,100
- X dc.l NULL
- X dc.l L10
- X dc.l MyTekst4a
- XMyTekst4a:
- X dc.b 1,0,RP_JAM2,0
- X dc.w 44,99
- X dc.l NULL
- X dc.l L10
- X dc.l MyTekst3b
- XMyTekst3b:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 45,110
- X dc.l NULL
- X dc.l L10
- X dc.l MyTekst4b
- XMyTekst4b:
- X dc.b 1,0,RP_JAM2,0
- X dc.w 44,109
- X dc.l NULL
- X dc.l L10
- X dc.l NULL
- X
- X
- X
- XMyTekst5:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 40,25
- X dc.l NULL
- XMt5 dc.l NULL
- X dc.l MyTekst6
- XMyTekst6:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 39,24
- X dc.l NULL
- XMt6 dc.l NULL
- X dc.l NULL
- X
- X;=====================================
- X
- X
- XIText1:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 21,3
- X dc.l NULL
- X dc.l DummyTekst
- X dc.l IText1a
- XIText1a:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 22,4
- X dc.l NULL
- X dc.l ITextText1
- X dc.l IText1b
- XIText1b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 21,3
- X dc.l NULL
- X dc.l ITextText1
- X dc.l NULL
- X
- XITextText1:
- X dc.b 'DF0:',0
- X cnop 0,2
- XDummyTekst:
- X dc.b ' ',0
- X cnop 0,2
- XGadget2:
- X dc.l Gadget3
- X dc.w 128,46
- X dc.w 80,15
- X dc.w NULL
- X dc.w RELVERIFY
- X dc.w BOOLGADGET
- X dc.l Border1
- X dc.l NULL
- X dc.l IText2
- X dc.l NULL
- X dc.l NULL
- X dc.w MEMORY
- X dc.l NULL
- XIText2:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 15,4
- X dc.l NULL
- X dc.l ITextText2
- X dc.l IText2b
- XIText2b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 14,3
- X dc.l NULL
- X dc.l ITextText2
- X dc.l NULL
- XITextText2:
- X dc.b 'Memory',0
- X cnop 0,2
- XGadget3:
- X dc.l Gadget4
- X dc.w 229,22
- X dc.w 80,15
- X dc.w NULL
- X dc.w RELVERIFY
- X dc.w BOOLGADGET
- X dc.l Border1
- X dc.l NULL
- X dc.l IText3
- X dc.l NULL
- X dc.l NULL
- X dc.w INSTALL
- X dc.l NULL
- X
- XIText3:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 13,4
- X dc.l NULL
- X dc.l ITextText3
- X dc.l IText3b
- XIText3b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 12,3
- X dc.l NULL
- X dc.l ITextText3
- X dc.l NULL
- XITextText3:
- X dc.b 'Install',0
- X cnop 0,2
- XGadget4:
- X dc.l Gadget5
- X dc.w 29,46
- X dc.w 80,15
- X dc.w NULL
- X dc.w RELVERIFY
- X dc.w BOOLGADGET
- X dc.l Border1
- X dc.l NULL
- X dc.l IText4
- X dc.l NULL
- X dc.l NULL
- X dc.w WATCH
- X dc.l NULL
- X
- XIText4:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 22,4
- X dc.l NULL
- X dc.l ITextText4
- X dc.l IText4b
- XIText4b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 21,3
- X dc.l NULL
- X dc.l ITextText4
- X dc.l NULL
- XITextText4:
- X dc.b 'Watch',0
- X cnop 0,2
- XGadget5:
- X dc.l Gadget6
- X dc.w 229,46
- X dc.w 80,15
- X dc.w NULL
- X dc.w RELVERIFY
- X dc.w BOOLGADGET
- X dc.l Border1
- X dc.l NULL
- X dc.l IText5
- X dc.l NULL
- X dc.l NULL
- X dc.w CLEAR
- X dc.l NULL
- X
- XIText5:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 22,4
- X dc.l NULL
- X dc.l ITextText5
- X dc.l IText5b
- XIText5b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 21,3
- X dc.l NULL
- X dc.l ITextText5
- X dc.l NULL
- XITextText5:
- X dc.b 'Clear',0
- X cnop 0,2
- XGadget6:
- X dc.l Gadget7
- X dc.w 128,22
- X dc.w 80,15
- X dc.w NULL
- X dc.w RELVERIFY
- X dc.w BOOLGADGET
- X dc.l Border1
- X dc.l NULL
- X dc.l IText6
- X dc.l NULL
- X dc.l NULL
- X dc.w VIEW
- X dc.l NULL
- X
- XIText6:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 22,4
- X dc.l NULL
- X dc.l ITextText6
- X dc.l IText6b
- XIText6b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 21,3
- X dc.l NULL
- X dc.l ITextText6
- X dc.l NULL
- XITextText6:
- X dc.b 'View',0
- X even
- X
- XGadget7:
- X dc.l Gadget8
- X dc.w 29,70
- X dc.w 80,15
- X dc.w NULL
- X dc.w RELVERIFY
- X dc.w BOOLGADGET
- X dc.l Border1
- X dc.l NULL
- X dc.l IText7
- X dc.l NULL
- X dc.l NULL
- X dc.w NEWSHELL
- X dc.l NULL
- XIText7:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 10,4
- X dc.l NULL
- X dc.l ITextText7
- X dc.l IText7b
- XIText7b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 9,3
- X dc.l NULL
- X dc.l ITextText7
- X dc.l NULL
- XITextText7:
- X dc.b 'NewShell',0
- X
- X even
- XGadget8:
- X dc.l Gadget9
- X dc.w 229,70
- X dc.w 80,15
- X dc.w NULL
- X dc.w RELVERIFY
- X dc.w BOOLGADGET
- X dc.l Border1
- X dc.l NULL
- X dc.l _IText8
- X dc.l NULL
- X dc.l NULL
- X dc.w HELP
- X dc.l NULL
- X_IText8:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 23,4
- X dc.l NULL
- X dc.l _ITextText8
- X dc.l _IText8b
- X_IText8b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 22,3
- X dc.l NULL
- X dc.l _ITextText8
- X dc.l NULL
- X_ITextText8:
- X dc.b 'Help',0
- X
- X even
- X
- XGadget9:
- X dc.l NULL
- X dc.w 128,70
- X dc.w 80,15
- X dc.w NULL
- X dc.w RELVERIFY
- X dc.w BOOLGADGET
- X dc.l Border1
- X dc.l NULL
- X dc.l _IT9
- X dc.l NULL
- X dc.l NULL
- X dc.w REBOOT
- X dc.l NULL
- X_IT9:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 15,4
- X dc.l NULL
- X dc.l _ITT9
- X dc.l _IT9b
- X_IT9b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 14,3
- X dc.l NULL
- X dc.l _ITT9
- X dc.l NULL
- X_ITT9:
- X dc.b 'ReBoot',0
- X
- X even
- X
- X
- X;======== Tekst structures for viewmemory ============
- X
- XIText8:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 11,26
- X dc.l NULL
- XMTE8 dc.l NULL
- X dc.l IText8b
- XIText8b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 10,25
- X dc.l NULL
- XMTE8b dc.l NULL
- X dc.l IText9
- X
- XIText9:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 11,36
- X dc.l NULL
- XMTE9 dc.l NULL
- X dc.l IText9b
- XIText9b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 10,35
- X dc.l NULL
- XMTE9b dc.l NULL
- X dc.l IText10
- X
- XIText10:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 11,46
- X dc.l NULL
- XMTE10 dc.l NULL
- X dc.l IText10b
- XIText10b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 10,45
- X dc.l NULL
- XMTE10b dc.l NULL
- X dc.l IText11
- X
- XIText11:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 11,56
- X dc.l NULL
- XMTE11 dc.l NULL
- X dc.l IText11b
- XIText11b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 10,55
- X dc.l NULL
- XMTE11b dc.l NULL
- X dc.l IText12
- X
- XIText12:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 11,66
- X dc.l NULL
- XMTE12 dc.l NULL
- X dc.l IText12b
- XIText12b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 10,65
- X dc.l NULL
- XMTE12b dc.l NULL
- X dc.l IText13
- X
- XIText13:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 11,81
- X dc.l NULL
- XMTE13 dc.l NULL
- X dc.l IText13b
- XIText13b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 10,80
- X dc.l NULL
- XMTE13b dc.l NULL
- X dc.l NULL
- XIText14:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 10
- Xy1 dc.w 0
- X dc.l NULL
- XMTE14 dc.l dummy
- X dc.l IText14b
- XIText14b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 9
- Xy2 dc.w 0
- X dc.l NULL
- XMTE14b dc.l dummy
- X dc.l NULL
- X
- X;== Help strings =====================================
- X
- XText15:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 11,21
- X dc.l NULL
- X dc.l T15
- X dc.l Text15b
- XText15b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 10,20
- X dc.l NULL
- X dc.l T15
- X dc.l Text16
- XT15 dc.b 'This program is programmed by EA van Breemen',0
- X even
- XText16:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 11,31
- X dc.l NULL
- X dc.l T16
- X dc.l Text16b
- XText16b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 10,30
- X dc.l NULL
- X dc.l T16
- X dc.l Text17
- XT16 dc.b 'Copyright by The Orega Programming Group Holland',0
- X even
- XText17:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 11,41
- X dc.l NULL
- X dc.l T17
- X dc.l Text17b
- XText17b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 10,40
- X dc.l NULL
- X dc.l T17
- X dc.l Text18
- XT17 dc.b 169,'1989,1990. Any commercially based reproducing',0
- X even
- XText18:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 11,51
- X dc.l NULL
- X dc.l T18
- X dc.l Text18b
- XText18b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 10,50
- X dc.l NULL
- X dc.l T18
- X dc.l Text19
- XT18 dc.b 'by any means of this shareware product is illegal.',0
- X even
- XText19:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 11,61
- X dc.l NULL
- X dc.l T19
- X dc.l Text19b
- XText19b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 10,60
- X dc.l NULL
- X dc.l T19
- X dc.l Text20
- XT19 dc.b 'If you find this program usefull please send $10',0
- X even
- XText20:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 11,71
- X dc.l NULL
- X dc.l T20
- X dc.l Text20b
- XText20b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 10,70
- X dc.l NULL
- X dc.l T20
- X dc.l Text21
- XT20 dc.b 'to: EA van Breemen, Berliozplein 15, 2651 VG',0
- X even
- XText21:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 11,81
- X dc.l NULL
- X dc.l T21
- X dc.l Text21b
- XText21b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 10,80
- X dc.l NULL
- X dc.l T21
- X dc.l Text22
- XT21 dc.b 'Berkel en Rodenrijs, Holland.',0
- X even
- XText22:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 11,101
- X dc.l NULL
- X dc.l T22
- X dc.l Text22b
- XText22b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 10,100
- X dc.l NULL
- X dc.l T22
- X dc.l Text23
- XT22 dc.b 'Help: Ctrl-F1 ..... NewShell',0
- X even
- XText23:
- X dc.b 2,0,RP_JAM2,0
- X dc.w 11,111
- X dc.l NULL
- X dc.l T23
- X dc.l Text23b
- XText23b:
- X dc.b 1,0,RP_JAM1,0
- X dc.w 10,110
- X dc.l NULL
- X dc.l T23
- X dc.l NULL
- XT23 dc.b ' Ctrl-HELP ..... BigBrother',0
- X even
- X
- X
- X;=====================================================
- X
- Xexpert dc.b 0,1,2,2,3,4,5,6,3,4,7
- X dc.b 7,3,4,7,7,8,8,0,1,8,8
- X dc.b 5,5,8,8,7,7,8,8,7,7
- X
- X even
- X
- Xconvtable dc.b '0123456789abcdef',0
- X even
- X
- Xmessage dc.b 'This system has been modified.',0
- XL0 dc.b 'Memory is clean.',0
- XL1 dc.b 'Sca virus.',0
- XL2 dc.b 'Unknown virus or not mounted rad.',0
- XL3 dc.b 'Non reset virus.',0
- XL4 dc.b 'Sca like virus.',0
- XL5 dc.b 'Dasa virus.',0
- XL6 dc.b 'Dasa like virus.',0
- XL7 dc.b 'ByteBandit or Lamer virus.',0
- XL8 dc.b 'Unknown system configuration???',0
- XL9 dc.b 'System has not been modified. ',0
- XL10 dc.b ' ',0
- X
- X even
- X
- XTaskName dc.b 'RAD',0
- X even
- Xdevicename dc.b 'trackdisk.device',0
- X even
- XMyPortName dc.b 'BigBrother Port',0
- X even
- Xerrormessage dc.b 'BootBlock Read/Write Error.',0
- X even
- Xfound_rad dc.b 'RadTask has been found.',0
- X even
- Xno_found_rad dc.b 'RadTask has not been found.',0
- X even
- Xloginfo dc.b 'Launched by BigBrother V2.11',10,0
- X even
- XAlertstring dc.w 170
- X dc.b 15
- X dc.b '! ! ! ! ! W A R N I N G ! ! ! ! ! ',0
- X dc.b 1
- X dc.w 176
- X dc.b 27
- X dc.b 'Are you sure to clear the memory?',0
- X dc.b 1
- X dc.w 10
- X dc.b 39
- X dc.b 'Press <LEFT MOUSE BUTTON> for OK ---- Press <RIGHT MOUSE BUTTON> for CANCEL',0
- X dc.b 0
- X even
- XAlertstring2 dc.w 170
- X dc.b 15
- X dc.b '! ! ! ! ! W A R N I N G ! ! ! ! ! ',0
- X dc.b 1
- X dc.w 176
- X dc.b 27
- X dc.b 'Are you sure you want to Reboot? ',0
- X dc.b 1
- X dc.w 10
- X dc.b 39
- X dc.b 'Press <LEFT MOUSE BUTTON> for OK ---- Press <RIGHT MOUSE BUTTON> for CANCEL',0
- X dc.b 0
- X even
- X
- X;================
- X;= Library data =
- X;================
- X
- XDosName dc.b 'dos.library',0
- X cnop 0,2
- XIntuitionName dc.b 'intuition.library',0
- X cnop 0,2
- XGraphicsName dc.b 'graphics.library',0
- X cnop 0,2
- XArpName dc.b 'arp.library',0
- X even
- Xcoldcapture dc.b 'ColdCapture - Offset 42 :$',0
- Xcoolcapture dc.b 'CoolCapture - Offset 46 :$',0
- Xkickmemptr dc.b 'KickMemPtr - Offset 546 :$',0
- Xkicktagptr dc.b 'KickTagPtr - Offset 550 :$',0
- Xdoio_vector dc.b 'DoIO Vector - Offset -454 :$',0
- X
- Xnumber dc.b '00000000',0
- X even
- X
- XBIG_NAME dc.b 'BigBrother',0
- X even
- XNIL_NAME dc.b 'NIL:',0
- X even
- X
- Xscript2 dc.b 'Execute s:F2',0
- Xscript3 dc.b 'Execute s:F3',0
- Xscript4 dc.b 'Execute s:F4',0
- Xscript5 dc.b 'Execute s:F5',0
- Xscript6 dc.b 'Execute s:F6',0
- Xscript7 dc.b 'Execute s:F7',0
- Xscript8 dc.b 'Execute s:F8',0
- Xscript9 dc.b 'Execute s:F9',0
- Xscript10 dc.b 'Execute s:F10',0
- X
- X
- X
- X;=====================
- X;= Input Device data =
- X;=====================
- X
- XInputDeviceName dc.b 'input.device',0
- X even
- X
- X
- X
- Xdf0 dc.l 'DF0:'
- Xdf1 dc.l 'DF1:'
- Xdf2 dc.l 'DF2:'
- Xdf3 dc.l 'DF3:'
- X
- X dc.b ' DoIO vector:'
- X even
- XDoIOVector dc.l $fc06dc ; DoIO Vector for V1.2
- X
- X;=======================
- X;= Arp data structures =
- X;=======================
- X
- Xnewshell: ; Process control structure for Arp
- X
- Xnsh_StackSize dc.l 4000 ; Stacksize for new process
- Xnsh_Pri dc.b 0 ; Priority of new process
- Xnsh_Control dc.b 128+8 ; Make a newshell
- Xnsh_LogMsg dc.l loginfo
- Xnsh_Input dc.l 0 ; Optional default input
- Xnsh_Output dc.l 0 ; Optional default output
- Xnsh_Reserved ds.l 5 ; Extra
- X
- XCONNAME dc.b 'CON:0/0/639/75/The Orega Programming Group Holland',0
- X even
- X
- Xnewshell2: ; Process control structure for Arp
- X
- Xpcb_StackSize dc.l 4000 ; Stacksize for new process
- Xpcb_Pri dc.b 0 ; Priority of new process
- Xpcb_Control dc.b 16 ; Make a background cli
- Xpcb_TrapCode dc.l 0
- Xpcb_Input dc.l 0 ; Optional default input
- Xpcb_Output dc.l 0 ; Optional default output
- Xpcb_Console dc.l CONNAME ; Union
- Xpcb_LoadedCode dc.l mymain
- Xpcb_lastGasp dc.l 0
- Xpcb_WBProcess dc.l 0
- X
- X even
- X bss
- X
- XDOSBase ds.l 1
- XGfxBase ds.l 1
- XIntuitionBase ds.l 1
- XArpBase ds.l 1
- Xwindow ds.l 1
- Xwindow2 ds.l 1
- Xrp ds.l 1
- Xrp2 ds.l 1
- Xbuffer ds.l 1
- Xkeyfound ds.w 1
- Xcommando ds.w 1
- XMode ds.b 1
- Xsignal ds.b 1
- XFlag ds.b 1
- Xdrive ds.b 1
- Xio_error ds.b 1
- X even
- Xdiskio ds.l 20
- Xreadreply ds.l 8
- Xmemorymask ds.l 1
- Xfilehandle ds.l 1
- Xlock ds.l 1
- XInputRequestBlock ds.b $30
- X even
- XInputDevPort ds.b $22
- X even
- XHandlerStuff ds.b $16
- X even
- Xdummy ds.b 70
- X even
- Xuserport ds.l 1
- X code
- X
- X;=======================================
- X;= Initialisation code for Big Brother =
- X;=======================================
- Xmymain move.l $4,a6
- X lea.l DosName,a1
- X clr.l d0
- X jsr _LVOOpenLibrary(a6)
- X move.l d0,DOSBase
- X beq nodos
- X bsr loadprefs
- X move.l $4,a6
- X clr.l d0
- X lea.l IntuitionName,a1
- X jsr _LVOOpenLibrary(a6)
- X move.l d0,IntuitionBase
- X beq nointuition
- X clr.l d0
- X lea.l GraphicsName,a1
- X jsr _LVOOpenLibrary(a6)
- X move.l d0,GfxBase
- X beq nographics
- X
- X bsr.s initall ; Open inputdevice etc.
- X bra check ; Jump to checkroutine
- X
- X
- X;==================================
- X;= loadprefs: tries to load prefs =
- X;==================================
- Xloadprefs:
- X move.l DOSBase,a6
- X move.l #prefs_file,d1
- X move.l #-2,d2
- X jsr _LVOLock(a6)
- X move.l d0,lock
- X beq no_prefs
- X move.l #prefs_file,d1
- X move.l #1005,d2
- X jsr _LVOOpen(a6)
- X move.l d0,filehandle
- X move.l d0,d1
- X move.l #DoIOVector,d2
- X moveq #4,d3
- X jsr _LVORead(a6)
- X move.l filehandle,d1
- X jsr _LVOClose(a6)
- X move.l lock,d1
- X jsr _LVOUnLock(a6)
- Xno_prefs:
- X rts
- X
- X
- X;=============================================
- X;= Routine to install a input device handler =
- X;=============================================
- X
- X
- Xinitall: ; Open inputdevice
- X move.b #0,signal
- X move.b #0,Flag
- X move.b #0,drive ; df0: is default
- X
- X move.l $4,a6 ; Make a message port
- X moveq #-1,d0
- X jsr _LVOAllocSignal(a6)
- X lea.l InputDevPort,a0
- X move.b d0,mp_SigBit(a0)
- X move.b #0,mp_Node+Ln_Pri(a0)
- X move.b #NT_MSGPORT,mp_Node+Ln_Type(a0)
- X move.l #MyPortName,mp_Node+Ln_Name(a0)
- X move.b #PA_SIGNAL,mp_Flags(a0)
- X sub.l a1,a1
- X jsr _LVOFindTask(a6)
- X move.l d0,a3
- X move.l #-1,WindowPtr(a3) ; I don't want requesters
- X lea.l InputDevPort,a0
- X move.l d0,mp_SigTask(a0)
- X move.l a0,a1
- X jsr _LVOAddPort(a6)
- X
- X lea.l InputRequestBlock,a0
- X move.b #NT_MESSAGE,io_Message+mn_Node+Ln_Type(a0)
- X move.w #$30,io_Message+mn_Length(a0)
- X lea.l InputDevPort,a1
- X move.l a1,io_Message+mn_ReplyPort(a0)
- X
- X lea.l HandlerStuff,a1
- X move.l #myhandler,is_Code(a1)
- X move.b #127,is_Node+Ln_Pri(a1)
- X move.l #0,is_Data(a1)
- X
- X lea.l InputRequestBlock,a1
- X lea.l InputDeviceName,a0
- X clr.l d0
- X clr.l d1
- X jsr _LVOOpenDevice(a6)
- X
- X lea.l InputRequestBlock,a0
- X move.w #IND_ADDHANDLER,io_Command(a0)
- X move.l #HandlerStuff,io_Data(a0)
- X move.l a0,a1
- X jsr _LVODoIO(a6) ; Install handler
- X
- X rts
- X
- X;====================================
- X;= Code for checking the Amiga =
- X;====================================
- X
- X
- Xcheck bsr checkevents ; Any messages ???
- X bsr.s chlus ; Check routine
- X move.l DOSBase,a6
- X moveq #50,d1
- X jsr _LVODelay(a6)
- X bra.s check
- X
- Xchlus move.l $4,a0
- X move.l a0,a6
- X clr.l d2
- X tst.l 42(a0)
- X beq.s 1$
- X ori.l #1,d2
- X1$ tst.l 46(a0)
- X beq.s 2$
- X ori.l #1,d2
- X2$ tst.l 546(a0)
- X beq.s 3$
- X ori.l #2,d2
- X3$ tst.l 550(a0)
- X beq.s 4$
- X ori.l #2,d2
- X4$ lea.l 350(a0),a0
- X lea.l devicename,a1
- X move.l $4,a6
- X jsr _LVOFindName(a6)
- X move.l d0,a0
- X move.l -28(a0),d1
- X cmp.l #$fc0000,d1
- X bhs.s 5$
- X ori.l #8,d2
- X5$ move.l $4,a0
- X move.l -454(a0),d1
- X cmp.l DoIOVector,d1
- X beq.s 6$
- X ori.l #4,d2
- X6$ lea.l TaskName,a1
- X jsr _LVOFindTask(a6)
- X tst.l d0
- X beq.s 7$
- X ori.l #16,d2
- X7$ andi.l #31,d2
- X move.l d2,memorymask
- X moveq #0,d0
- X lea.l expert,a0
- X move.b 0(a0,d2),d0
- X cmp.b #0,d0
- X beq.s novirus
- X cmp.b #2,d0
- X beq.s novirus
- X move.b d0,signal
- Xnovirus
- X rts
- X
- X
- X;======================================================
- X;= The Input Device Handler for checking the Help Key =
- X;======================================================
- X
- Xmyhandler ; The input_handler
- X cmp.b #IECLASS_RAWKEY,4(a0)
- X beq.s akey
- Xnoop move.l a0,d0 ; Return head of list
- X rts
- Xakey move.w 8(a0),d0
- X and.w #IEQUALIFIER_CONTROL,d0 ; Mask Control bit
- X beq.s noop ; None of my keys
- X cmp.w #HELP_KEY,6(a0)
- X bne.s 1$ ; Check next key
- X move.w #HELP_KEY,keyfound
- X bra needed
- X1$ cmp.w #FUNC_F1,6(a0)
- X bne.s 2$
- X move.w #FUNC_F1,keyfound
- X bra needed
- X2$ cmp.w #FUNC_F2,6(a0)
- X bne.s 3$
- X move.w #FUNC_F2,keyfound
- X bra needed
- X3$ cmp.w #FUNC_F3,6(a0)
- X bne.s 4$
- X move.w #FUNC_F3,keyfound
- X bra needed
- X4$ cmp.w #FUNC_F4,6(a0)
- X bne.s 5$
- X move.w #FUNC_F4,keyfound
- X bra needed
- X5$ cmp.w #FUNC_F5,6(a0)
- X bne.s 6$
- X move.w #FUNC_F5,keyfound
- X bra needed
- X6$ cmp.w #FUNC_F6,6(a0)
- X bne.s 7$
- X move.w #FUNC_F6,keyfound
- X bra needed
- X7$ cmp.w #FUNC_F7,6(a0)
- X bne.s 8$
- X move.w #FUNC_F7,keyfound
- X bra needed
- X8$ cmp.w #FUNC_F8,6(a0)
- X bne.s 9$
- X move.w #FUNC_F8,keyfound
- X bra needed
- X9$ cmp.w #FUNC_F9,6(a0)
- X bne.s 10$
- X move.w #FUNC_F9,keyfound
- X bra needed
- X10$ cmp.w #FUNC_F10,6(a0)
- X bne noop
- X move.w #FUNC_F10,keyfound
- Xneeded move.b #1,Flag ; Big Brother Control Window is needed !
- X move.l (a0),a0
- X cmp.l #0,a0
- X beq.s out
- X bra myhandler ; Process more events !
- Xout clr.l d0 ; End of chain
- X rts
- X
- X;=====================================================
- X;= Checks if an event has occured and responds to it =
- X;=====================================================
- X
- Xcheckevents
- X clr.l d0
- X move.b signal,d0
- X beq.s no_virus_signal
- X cmp.b #2,d0
- X beq.s no_virus_signal
- X bra.s activate ; Open window etc., a virus !!!
- Xno_virus_signal:
- X move.b Flag,d0
- X beq.s 1$ ; No keys has been pressed
- X move.w keyfound,d0
- X cmp.w #FUNC_F1,d0
- X beq newcli ; Spawn a cli
- X cmp.w #HELP_KEY,d0
- X beq.s activate
- X bra do_function_keys
- X1$ rts
- X
- X;=========================================================
- X;= Routine for the window processing in case of an event =
- X;=========================================================
- X
- Xactivate
- X move.l IntuitionBase,a6
- X jsr _LVOWBenchToFront(a6)
- X move.l #NewWindowStructure1,a0
- X jsr _LVOOpenWindow(a6)
- X move.l d0,window
- X move.l d0,a0
- X move.l wd_RPort(a0),rp
- X move.l rp,a0
- X move.l #Border2,a1
- X moveq #0,d0
- X moveq #0,d1
- X jsr _LVODrawBorder(a6)
- X bsr printstatus
- Xwaitloop:
- X move.l window,a0
- X move.l wd_UserPort(a0),a0
- X move.l a0,userport
- X moveq #0,d1
- X move.b mp_SigBit(a0),d1
- X moveq #1,d0
- X asl.l d1,d0
- X move.l $4,a6
- X jsr _LVOWait(a6) ; Wait for an event
- Xlook move.l $4,a6
- X move.l userport,a0 ; Get UserPort
- X jsr _LVOGetMsg(a6) ; Get Message from IDCMP Port
- X tst.l d0
- X beq waitloop ; No more messages left
- X move.l d0,a1
- X move.l im_Class(a1),d4
- X move.l im_Code(a1),d5
- X move.l im_Address(a1),a2
- X jsr _LVOReplyMsg(a6) ; Reply the message
- X
- X cmp.l #CLOSEWINDOW,d4
- X beq.s watchmode
- X cmp.l #GADGETUP,d4
- X bne.s look
- X
- X bsr.s process_gadgets ; Someone has pressed a gadget
- X cmp.w #WATCH,d0
- X bne.s look
- X
- Xwatchmode:
- X move.l IntuitionBase,a6
- X move.l window,a0
- X jsr _LVOCloseWindow(a6)
- X move.b #0,Flag
- X move.b #0,signal
- X rts
- X
- X;==================================
- X;= Routine for processing Gadgets =
- X;==================================
- X
- Xprocess_gadgets:
- X move.w gg_GadgetID(a2),d0
- X cmp.w #WATCH,d0
- X bne.s 1$
- X rts
- X1$ cmp.w #DRIVE,d0
- X beq.s nextdrive
- X cmp.w #CLEAR,d0
- X beq clearmemory
- X cmp.w #VIEW,d0
- X beq viewbootblock
- X cmp.w #INSTALL,d0
- X beq installdisk
- X cmp.w #MEMORY,d0
- X beq viewmemory
- X cmp.w #NEWSHELL,d0
- X beq newcli
- X cmp.w #HELP,d0
- X beq showhelp
- X cmp.w #REBOOT,d0
- X beq reboot
- X clr.l d0 ; Clear d0 if GadgetID <> WATCH
- X rts
- X
- X;==============================
- X;= Finds next available drive =
- X;==============================
- X
- Xnextdrive:
- X move.b drive,d0
- X addq #1,d0
- X cmp.b #4,d0 ; drive number too high ???
- X bne.s 1$
- X moveq #0,d0 ; just select df0:
- X1$ cmp.b #0,d0
- X bne.s 2$
- X move.l df0,ITextText1
- X2$ cmp.b #1,d0
- X bne.s 3$
- X move.l df1,ITextText1
- X3$ cmp.b #2,d0
- X bne.s 4$
- X move.l df2,ITextText1
- X4$ cmp.b #3,d0
- X bne.s 5$
- X move.l df3,ITextText1
- X5$ move.b d0,drive
- X move.l #ITextText1,d1
- X move.l DOSBase,a6
- X jsr _LVODeviceProc(a6) ; Does drive exists ?
- X tst.l d0
- X bne.s 6$ ; Yeah
- X bra.s nextdrive ; Try next drive
- X6$ move.l #Gadget1,a0
- X move.l window,a1
- X move.l #0,a2
- X move.l IntuitionBase,a6
- X jsr _LVORefreshGadgets(a6)
- X clr.l d0
- X rts
- X
- X;================================
- X;= Clears memory area from viri =
- X;================================
- X
- Xclearmemory:
- X bsr yesno ; Are you sure????
- X tst.l d0
- X beq clearexit ; Noop
- X move.l $4,a6
- X jsr _LVODisable(a6)
- X lea.l TaskName,a1
- X jsr _LVOFindTask(a6)
- X tst.l d0
- X beq.s 1$ ; No rad
- X move.l d0,a1
- X jsr _LVORemTask(a6) ; Kill it!!!
- X1$ move.l $4,a6
- X clr.l 42(a6)
- X clr.l 46(a6)
- X clr.l 546(a6)
- X clr.l 550(a6)
- X clr.l 554(a6)
- X move.l DoIOVector,-454(a6)
- X clr.l d1
- X lea.l 34(a6),a0
- X move.w #$16,d0
- Xloop add.w (a0)+,d1
- X dbf d0,loop
- X not.w d1
- X move.w d1,82(a6)
- X jsr _LVOEnable(a6)
- X move.l IntuitionBase,a6
- X move.l #0,a0
- X jsr _LVODisplayBeep(a6)
- X move.l $4,a6
- X move.b #0,signal
- X bsr chlus ; Check memory
- X bsr printstatus ; Show current memory status
- Xclearexit:
- X clr.l d0 ; No WATCH Gadget
- X rts
- X
- X;====================================
- X;= Are you sure to clear memory???? =
- X;====================================
- X
- Xyesno:
- X move.l IntuitionBase,a6
- X move.l #0,d0
- X move.l #Alertstring,a0
- X move.l #50,d1
- X jsr _LVODisplayAlert(a6)
- X rts
- X
- X;====================================
- X;= Are you sure to reboot???? =
- X;====================================
- X
- Xyesno2:
- X move.l IntuitionBase,a6
- X move.l #0,d0
- X move.l #Alertstring2,a0
- X move.l #50,d1
- X jsr _LVODisplayAlert(a6)
- X rts
- X
- X
- X
- X
- X
- X;==================================================
- X;= Routine shows a bootblock in ascii in a window =
- X;==================================================
- X
- Xviewbootblock:
- X move.w #534,hsize ; Adjust windowwidth
- X move.w #150,hsize+2 ; Adjust height
- X lea.l InitTitle,a0
- X move.l a0,title2
- X move.l IntuitionBase,a6
- X move.l #NewWindowStructure2,a0
- X jsr _LVOOpenWindow(a6)
- X move.l d0,window2
- X move.l d0,a0
- X move.l wd_RPort(a0),rp2
- X
- X move.l $4,a6
- X move.l #1024,d0
- X moveq #2,d1 ; Chip memory needed
- X jsr _LVOAllocMem(a6) ; Allocate buffer for bootblock
- X move.l d0,buffer
- X
- X bsr readbootblock
- X move.b io_error,d0
- X cmp.b #29,d0
- X bne 1$ ; Disk is available
- X
- X move.l window2,a0
- X move.l #-234,d0
- X move.l #-100,d1
- X move.l IntuitionBase,a6
- X jsr _LVOSizeWindow(a6) ; Make window smaller
- X move.l #disk_changed,Mt5
- X move.l #disk_changed,Mt6
- X move.l rp2,a0
- X clr.l d0
- X clr.l d1
- X move.l #MyTekst5,a1
- X jsr _LVOPrintIText(a6) ; No disk !
- X bra 2$ ; skip printbuffer
- X
- X
- X1$ bsr printbuffer
- X
- X2$ move.l buffer,a1
- X move.l #1024,d0
- X move.l $4,a6
- X jsr _LVOFreeMem(a6) ; Free buffer for bootblock
- X
- X move.l window2,a0
- X bsr waitforclose ; Wait for closegadget
- X
- X move.l IntuitionBase,a6
- X move.l window2,a0
- X jsr _LVOCloseWindow(a6)
- X clr.l d0 ; No WATCH Gadget
- X rts
- X
- X;====================================
- X;= Routine for installing your disk =
- X;====================================
- X
- Xinstalldisk:
- X move.w #300,hsize
- X move.w #50,hsize+2 ; Adjust height
- X lea.l InstallTitle,a0
- X move.l a0,title2
- X move.l IntuitionBase,a6
- X move.l #NewWindowStructure2,a0
- X jsr _LVOOpenWindow(a6)
- X move.l d0,window2
- X move.l d0,a0
- X move.l wd_RPort(a0),rp2
- X
- X move.l $4,a6
- X move.l #1024,d0
- X move.l #2+1<<16,d1 ; Cleared Chip memory needed
- X jsr _LVOAllocMem(a6) ; Allocate buffer for bootblock
- X move.l d0,buffer
- X beq skip_install ; Prevent a guru
- X
- X lea.l bootcode,a0
- X move.l d0,a1
- X move.l #bootendcode-bootcode-1,d1
- X1$ move.b (a0)+,(a1)+ ; Copy bootblock into buffer
- X dbra d1,1$
- X move.l #StandardBootBlock,a0
- X move.l #Standardend-StandardBootBlock-1,d1
- X2$ move.b (a0)+,(a1)+
- X dbra d1,2$
- X
- X bsr sum
- X bsr writebuffer
- X
- X move.l buffer,a1
- X move.l #1024,d0
- X move.l $4,a6
- X jsr _LVOFreeMem(a6) ; Free buffer for bootblock
- X
- X tst.b io_error
- X bne.s 3$ ; An error has occured
- X move.l #install_message,Mt5
- X move.l #install_message,Mt6
- X bra.s install_m
- X3$ move.b io_error,d0
- X cmp.b #28,d0 ; disk protected???
- X bne 4$
- X move.l #disk_protected,Mt5
- X move.l #disk_protected,Mt6
- X bra install_m
- X4$ cmp.b #29,d0 ; disk changed ????
- X bne 5$
- X move.l #disk_changed,Mt5
- X move.l #disk_changed,Mt6
- X bra install_m
- X5$ move.l #install_fail,Mt5 ; Unknown failure
- X move.l #install_fail,Mt6
- Xinstall_m
- X move.l rp2,a0
- X clr.l d0
- X clr.l d1
- X move.l #MyTekst5,a1
- X move.l IntuitionBase,a6
- X jsr _LVOPrintIText(a6)
- X
- X
- X move.l window2,a0
- X bsr waitforclose ; Wait for closegadget
- X
- Xskip_install:
- X move.l IntuitionBase,a6
- X move.l window2,a0
- X jsr _LVOCloseWindow(a6)
- X clr.l d0 ; No WATCH Gadget
- X rts
- X
- X;=============================================
- X;= Routine for displaying a part of ExecBase =
- X;=============================================
- X
- X
- Xviewmemory:
- X move.w #318,hsize
- X move.w #100,hsize+2 ; Adjust height
- X lea.l ViewTitle,a0
- X move.l a0,title2
- X move.l IntuitionBase,a6
- X move.l #NewWindowStructure2,a0
- X jsr _LVOOpenWindow(a6)
- X move.l d0,window2
- X move.l d0,a0
- X move.l wd_RPort(a0),rp2
- X
- X move.l $4,a6
- X move.l #5*80,d0
- X move.l #1<<16,d1
- X jsr _LVOAllocMem(a6) ; Allocate buffer
- X move.l d0,buffer
- X move.l d0,-(a7)
- X
- X move.l d0,MTE8
- X move.l d0,MTE8b
- X add.l #80,d0
- X move.l d0,MTE9
- X move.l d0,MTE9b
- X add.l #80,d0
- X move.l d0,MTE10
- X move.l d0,MTE10b
- X add.l #80,d0
- X move.l d0,MTE11
- X move.l d0,MTE11b
- X add.l #80,d0
- X move.l d0,MTE12
- X move.l d0,MTE12b
- X
- X
- X
- X;======== ColdCapture ==============
- X
- X lea.l coldcapture,a0
- X move.l buffer,a1
- X bsr stringcopy
- X
- X move.l $4,a6
- X move.l 42(a6),a0
- X bsr makestring
- X
- X
- X;======= CoolCapture =============
- X
- X add.l #80,buffer
- X lea.l coolcapture,a0
- X move.l buffer,a1
- X bsr stringcopy
- X
- X move.l $4,a6
- X move.l 46(a6),a0
- X bsr makestring
- X
- X
- X;======== KickMemPtr ===============
- X
- X add.l #80,buffer
- X lea.l kickmemptr,a0
- X move.l buffer,a1
- X bsr stringcopy
- X
- X move.l $4,a6
- X move.l 546(a6),a0
- X bsr makestring
- X
- X
- X;========== KickTagPtr ================
- X
- X add.l #80,buffer
- X lea.l kicktagptr,a0
- X move.l buffer,a1
- X bsr stringcopy
- X
- X move.l $4,a6
- X move.l 550(a6),a0
- X bsr makestring
- X
- X;==== DoIO =========================
- X
- X add.l #80,buffer
- X lea.l doio_vector,a0
- X move.l buffer,a1
- X bsr stringcopy
- X
- X move.l $4,a6
- X move.l -454(a6),a0
- X bsr makestring
- X
- X;===== Rad ============================
- X
- X move.l $4,a6
- X lea.l TaskName,a1
- X jsr _LVOFindTask(a6)
- X tst.l d0
- X beq.s no_rad ; No rad
- X move.l #found_rad,MTE13
- X move.l #found_rad,MTE13b
- X bra.s rad_cont
- Xno_rad move.l #no_found_rad,MTE13
- X move.l #no_found_rad,MTE13b
- Xrad_cont:
- X
- X move.l rp2,a0
- X clr.l d0
- X clr.l d1
- X move.l #IText8,a1
- X move.l IntuitionBase,a6
- X jsr _LVOPrintIText(a6)
- X
- X move.l $4,a6
- X move.l #5*80,d0
- X move.l (a7)+,a1
- X jsr _LVOFreeMem(a6) ; Free buffer
- X
- X move.l window2,a0
- X bsr waitforclose
- X
- X move.l IntuitionBase,a6
- X move.l window2,a0
- X jsr _LVOCloseWindow(a6)
- X
- X clr.l d0 ; No WATCH Gadget
- X rts
- X
- X;==============
- X;= Makestring =
- X;==============
- X
- Xmakestring:
- X move.l $4,a6
- X lea.l number,a1
- X bsr.s convert
- X
- X lea.l number,a1
- X move.l buffer,a0
- X bsr.s stringadd
- X rts
- X
- X;========================
- X;= Copy string a0 -> a1 =
- X;========================
- X
- Xstringcopy:
- X1$ move.b (a0)+,d0
- X move.b d0,(a1)+
- X bne.s 1$
- X rts
- X
- X;==============================
- X;= Add string a1 to string a0 =
- X;==============================
- X
- Xstringadd:
- X move.l a2,-(a7)
- X1$ cmp.b #0,(a0)+ ; Find end of string a0
- X bne.s 1$
- X subq #1,a0
- X move.l a0,a2
- X move.l a1,a0
- X move.l a2,a1
- X bsr.s stringcopy ; Paste a1 to a0
- X move.l (a7)+,a2
- X rts
- X
- X;==========================================
- X;= Convert value in a0 to buffer a1 (Hex) =
- X;==========================================
- X
- Xconvert:
- X movem.l d2-d3/a2,-(a7)
- X lea.l convtable,a2
- X move.l a0,d1
- X moveq #7,d3
- X1$ move.l d1,d2
- X and.l #$f,d2
- X move.l d2,d0
- X move.b 0(a2,d0),-(a7)
- X lsr.l #4,d1
- X dbra d3,1$
- X moveq #7,d3
- X2$ move.b (a7)+,(a1)+
- X dbra d3,2$
- X movem.l (a7)+,d2-d3/a2
- X rts
- X
- X
- X
- X
- X;=========================================
- X;= Calculates lenght of string in buffer =
- X;= Returns lenght in d0 =
- X;=========================================
- X
- Xlength:
- X clr.l d0
- X move.l a5,-(a7)
- X move.l buffer,a5
- X1$ addq #1,d0
- X cmp.b #0,(a5)+
- X bne.s 1$
- X subq #1,d0
- X move.l (a7)+,a5
- X rts
- X;=======================================
- X;= Waits for closegadget to be pressed =
- X;=======================================
- X
- Xwaitforclose:
- X move.l $4,a6
- X move.l a5,-(a7)
- X move.l a0,a5
- X1$ move.l a5,a0
- X move.l wd_UserPort(a0),a0
- X move.l a0,-(a7)
- X moveq #0,d1
- X move.b mp_SigBit(a0),d1
- X moveq #1,d0
- X asl.l d1,d0
- X jsr _LVOWait(a6) ; Wait for an event
- X move.l (a7)+,a0 ; Get UserPort
- X jsr _LVOGetMsg(a6) ; Get Message from IDCMP Port
- X move.l d0,a1
- X move.l im_Class(a1),d4
- X jsr _LVOReplyMsg(a6) ; Reply the message
- X
- X cmp.l #CLOSEWINDOW,d4
- X bne.s 1$
- X move.l (a7)+,a5
- X rts
- X
- X
- X;========================================
- X;= Prints current virusstatus in window =
- X;========================================
- X
- Xprintstatus:
- X move.l window,a0
- X move.l wd_RPort(a0),a1
- X move.l a1,rp ; Store RastPort
- X
- X moveq #0,d1
- X move.b signal,d1
- X beq.s 1$ ; No extra message needed (=Clean)
- X cmp.b #2,d1
- X beq.s 1$ ; The same...
- X move.l #message,Mt3 ; System has been modified!
- X move.l #message,Mt4
- X bra 12$
- X
- X1$ move.l rp,a0 ; Clear message box
- X clr. d0
- X clr.l d1
- X move.l #MyTekst3a,a1
- X move.l IntuitionBase,a6
- X jsr _LVOPrintIText(a6)
- X
- X move.l #L9,Mt3 ; Clear previous(?) message!
- X move.l #L9,Mt4
- X
- X
- X12$ move.l rp,a0
- X clr. d0
- X clr.l d1
- X move.l #MyTekst3,a1
- X move.l IntuitionBase,a6
- X jsr _LVOPrintIText(a6)
- X
- X move.b signal,d1
- X cmp.b #0,d1
- X bne.s 2$
- X lea.l L0,a0
- X bra.s 10$
- X2$ cmp.b #1,d1
- X bne.s 3$
- X lea.l L1,a0
- X bra.s 10$
- X3$ cmp.b #2,d1
- X bne.s 4$
- X lea.l L2,a0
- X bra.s 10$
- X4$ cmp.b #3,d1
- X bne.s 5$
- X lea.l L3,a0
- X bra.s 10$
- X5$ cmp.b #4,d1
- X bne.s 6$
- X lea.l L4,a0
- X bra.s 10$
- X6$ cmp.b #5,d1
- X bne.s 7$
- X lea.l L5,a0
- X bra.s 10$
- X7$ cmp.b #6,d1
- X bne.s 8$
- X lea.l L6,a0
- X bra.s 10$
- X8$ cmp.b #7,d1
- X bne.s 9$
- X lea.l L7,a0
- X bra.s 10$
- X9$ cmp.b #8,d1
- X bne.s 11$
- X lea.l L8,a0
- X10$ move.l a0,Mt1
- X move.l a0,Mt2
- X move.l rp,a0
- X move.l #MyTekst,a1
- X clr.l d0
- X clr.l d1
- X move.l IntuitionBase,a6
- X jsr _LVOPrintIText(a6)
- X11$ rts
- X
- X
- X;======================================
- X;= Prints buffer in ascii on a window =
- X;======================================
- X
- Xprintbuffer:
- X move.l buffer,a3
- X move.l a3,a4
- X move.l #1023,d1
- X clr.l d0
- Xcloop move.b (a3)+,d0
- X cmp.b #31,d0
- X bls.s outrange
- X cmp.b #127,d0
- X bhs.s outrange
- X move.b d0,(a4)+
- X dbra d1,cloop
- X bra.s printit
- Xoutrange:
- X move.b #'.',(a4)+
- X dbra d1,cloop
- Xprintit:
- X move.l window2,a0
- X move.l wd_RPort(a0),rp2
- X moveq #0,d3
- X move.l buffer,a3
- Xploop move.l d3,d1
- X mulu #8,d1
- X add.l #20,d1
- X move.w d1,y1
- X subq #1,d1
- X move.w d1,y2
- X
- X
- X move.l #dummy,a2
- X move.l d3,d1
- X mulu #64,d1
- X move.l a3,a0
- X add.l d1,a0
- X moveq #63,d0
- X1$ move.b (a0)+,(a2)+ ; copy string to dummy
- X dbra d0,1$
- X move.b #0,(a2) ; end string with 0
- X
- X clr.l d0
- X clr.l d1
- X move.l rp2,a0
- X lea.l IText14,a1
- X move.l IntuitionBase,a6
- X jsr _LVOPrintIText(a6)
- X
- X addq #1,d3
- X cmp.l #15,d3
- X bls.s ploop
- X rts
- X
- X;============================
- X;= Read bootblock in buffer =
- X;============================
- X
- Xreadbootblock:
- X move.w #READ,commando
- X bsr.s bootio
- X rts
- X
- X;=============================
- X;= Write buffer to bootblock =
- X;=============================
- X
- Xwritebuffer:
- X move.w #WRITE,commando
- X bsr.s bootio
- X rts
- X
- X
- X;==========================================
- X;= Multi function boot read/write routine =
- X;= =
- X;= io_error contains error on exit =
- X;= =
- X;==========================================
- X
- Xbootio:
- X move.l $4,a6
- X
- X sub.l a1,a1
- X jsr _LVOFindTask(a6)
- X move.l d0,readreply+$10
- X lea.l readreply,a1
- X jsr _LVOAddPort(a6)
- X lea.l diskio,a1
- X moveq #0,d0
- X move.b drive,d0
- X clr.l d1
- X lea.l devicename,a0
- X jsr _LVOOpenDevice(a6)
- X tst.l d0
- X beq.s tskip
- X lea.l readreply,a1
- X jsr _LVORemPort(a6)
- X bra trackerror
- Xtskip lea.l diskio,a1
- X move.l buffer,40(a1)
- X move.l #readreply,14(a1)
- X move.w #TD_CHANGESTATE,28(a1)
- X jsr _LVODoIO(a6)
- X move.l diskio+32,d6
- X beq.s tskip2
- X move.b #29,io_error
- X bra terror ; No disk!
- X
- Xtskip2 move.w commando,d5
- X cmp.w #READ,d5
- X bne.s 1$ ; Don't CMD_CLEAR for a write
- X lea.l diskio,a1 ; We will read a bootblock
- X move.l buffer,40(a1)
- X move.l #readreply,14(a1) ; so, force a reading
- X move.w #5,28(a1)
- X jsr _LVODoIO(a6) ; CMD_Clear (Clear trackbuffer)
- X
- X1$ lea.l diskio,a1
- X move.l #readreply,14(a1)
- X move.w commando,28(a1)
- X move.l buffer,40(a1)
- X move.l #1024,36(a1)
- X move.l #0,44(a1)
- X move.l $4,a6
- X jsr _LVODoIO(a6)
- X move.b diskio+31,io_error ; Error number
- X
- X move.w commando,d5
- X cmp.w #WRITE,d5
- X bne.s 2$
- X
- X lea.l diskio,a1
- X move.l buffer,40(a1)
- X move.l #readreply,14(a1)
- X move.w #4,28(a1) ; CMD_UPDATE
- X move.l $4,a6
- X jsr _LVODoIO(a6) ; Write all buffers out
- X move.b diskio+31,io_error ; Get error number
- X
- X2$ tst.b io_error
- X beq.s tgood
- Xterror lea.l errormessage,a1
- X move.l window2,a0
- X move.l #0,a2
- X move.l IntuitionBase,a6
- X jsr _LVOSetWindowTitles(a6)
- X move.l $4,a6
- X
- Xtgood lea.l diskio,a1
- X move.w #9,28(a1) ; TD_MOTOR
- X move.l #0,36(a1)
- X jsr _LVODoIO(a6)
- X
- X lea.l readreply,a1
- X jsr _LVORemPort(a6)
- X lea.l diskio,a1
- X jsr _LVOCloseDevice(a6)
- X
- Xtrackerror:
- X rts
- X
- X;================================
- X;= The maincode of my Bootblock =
- X;================================
- X
- Xbootcode:
- X dc.b 'DOS',0
- X dc.l 0
- Xroot dc.l 880
- Xmain move.l $4,a6
- X lea.l Dosname(pc),a1
- X jsr _LVOFindResident(a6)
- X move.l d0,a0
- X move.l 22(a0),a0
- X clr.l d0
- X rts
- XDosname dc.b 'dos.library',0
- Xbootendcode:
- X
- X;=========================================================
- X;= Routine which calculates the checksum of my bootblock =
- X;=========================================================
- X even
- X
- Xsum clr.l d0
- X move.l buffer,a0
- X move.l #255,d1
- Xsumloop add.l (a0)+,d0
- X bcc.s sumcont
- X addq #1,d0
- Xsumcont dbra d1,sumloop
- X moveq #-1,d1
- X sub.l d0,d1
- X move.l buffer,a2
- X move.l d1,4(a2)
- X rts
- X
- X;===============================================
- X;= This routine will spawn a new cli using arp =
- X;===============================================
- X
- Xnewcli:
- X move.l $4,a6
- X lea.l ArpName,a1
- X clr.l d0
- X jsr _LVOOpenLibrary(a6)
- X move.l d0,ArpBase
- X bne 1$
- X move.l IntuitionBase,a6 ; Arp is not available
- X move.l #0,a0
- X jsr _LVODisplayBeep(a6)
- X bra 2$
- X1$ move.l ArpBase,a6
- X lea.l CONNAME,a0
- X move.l #0,a1
- X lea.l newshell,a2
- X jsr _ASyncRun(a6)
- X move.l $4,a6
- X move.l ArpBase,a1
- X jsr _LVOCloseLibrary(a6) ; Close Arp
- X2$ move.b #0,Flag ; Clear key signal
- X move.b #0,keyfound
- X clr.l d0
- X rts
- X
- X
- Xdo_function_keys:
- X cmp.w #FUNC_F2,d0
- X bne 1$
- X lea.l script2,a0
- X bra cont
- X1$ cmp.w #FUNC_F3,d0
- X bne 2$
- X lea.l script3,a0
- X bra cont
- X2$ cmp.w #FUNC_F4,d0
- X bne 3$
- X lea.l script4,a0
- X bra cont
- X3$ cmp.w #FUNC_F5,d0
- X bne 4$
- X lea.l script5,a0
- X bra cont
- X4$ cmp.w #FUNC_F6,d0
- X bne 5$
- X lea.l script6,a0
- X bra cont
- X5$ cmp.w #FUNC_F7,d0
- X bne 6$
- X lea.l script7,a0
- X bra cont
- X6$ cmp.w #FUNC_F8,d0
- X bne 7$
- X lea.l script8,a0
- X bra cont
- X7$ cmp.w #FUNC_F9,d0
- X bne 8$
- X lea.l script9,a0
- X bra cont
- X8$ cmp.w #FUNC_F10,d0
- X bne ret
- X lea.l script10,a0
- Xcont move.l a0,d1
- X clr.l d2
- X clr.l d3
- X move.l DOSBase,a6
- X jsr _LVOExecute(a6)
- X
- Xret move.b #0,Flag ; Clear key signal
- X move.b #0,keyfound
- X clr.l d0
- X rts
- X
- X
- X
- X;====================================
- X;= Help routine: shows credits+help =
- X;====================================
- X
- Xshowhelp:
- X move.w #418,hsize
- X move.w #130,hsize+2 ; Adjust height
- X move.l #HelpTitle,title2
- X move.l IntuitionBase,a6
- X move.l #NewWindowStructure2,a0
- X jsr _LVOOpenWindow(a6)
- X move.l d0,window2
- X move.l d0,a0
- X move.l wd_RPort(a0),a0
- X move.l #Text15,a1
- X clr.l d0
- X clr.l d1
- X jsr _LVOPrintIText(a6)
- X
- X move.l window2,a0
- X bsr waitforclose
- X
- X move.l IntuitionBase,a6
- X move.l window2,a0
- X jsr _LVOCloseWindow(a6)
- X
- X clr.l d0
- X rts
- X
- X;======================
- X;= The reboot routine =
- X;======================
- X
- Xreboot bsr yesno2 ; Want to reboot???
- X tst.l d0
- X bne.s 1$ ; noop
- X rts
- X1$ move.l $4,a6
- X move.l #-1,$4
- X cmp.w #V36_EXEC,LIB_VERSION(a6)
- X blt.s old_exec
- X jmp TEMP_ColdReboot(a6) ;Let Exec do it...
- X ;NOTE: Control flow never returns to here
- X
- X
- Xold_exec:
- X lea.l GoAway(pc),a5 ;address of code to execute
- X jsr _LVOSupervisor(a6) ;trap to code at (a5)...
- X ;NOTE: Control flow never returns to here
- X
- X
- X;-------------- MagicResetCode ---------DO NOT CHANGE-----------------------
- X
- X CNOP 0,4 ;IMPORTANT! Longword align!
- XGoAway: lea.l MAGIC_ROMEND,a0 ;(end of ROM)
- X sub.l MAGIC_SIZEOFFSET(a0),a0 ;(end of ROM)-(ROM size)=PC
- X move.l 4(a0),a0 ;Get Initial Program Counter
- X subq.l #2,a0 ;now points to second RESET
- X reset ;first RESET instruction
- X jmp (a0) ;CPU Prefetch executes this
- X ;NOTE: the RESET and JMP instructions must share a longword!
- X
- X;---------------------------------------DO NOT CHANGE-----------------------
- X
- X
- X
- X;=======================
- X;= The Cleanup Routine =
- X;=======================
- X
- Xexit move.l $4,a6
- X move.l GfxBase,a1
- X jsr _LVOCloseLibrary(a6)
- Xnographics:
- X move.l IntuitionBase,a1
- X jsr _LVOCloseLibrary(a6)
- Xnointuition:
- X move.l DOSBase,a1
- X jsr _LVOCloseLibrary(a6)
- Xnodos rts
- X
- X;=========================
- X;= The end of the source =
- X;=========================
- X
- X end
- X
- X
- X
- X
- END_OF_FILE
- if test 42429 -ne `wc -c <'bigbrother.asm'`; then
- echo shar: \"'bigbrother.asm'\" unpacked with wrong size!
- fi
- # end of 'bigbrother.asm'
- fi
- if test -f 'bigbrother.doc' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'bigbrother.doc'\"
- else
- echo shar: Extracting \"'bigbrother.doc'\" \(6053 characters\)
- sed "s/^X//" >'bigbrother.doc' <<'END_OF_FILE'
- X
- XDocumentation for Bigbrother V2.11
- X==================================
- X
- XThis document will describe the working of Bigbrother V2.11 for
- Xthe Commodore Amiga computer. Bigbrother and all related programs
- Xand documents are presented as is. Although the author has made
- Xevery effort to make this product free of bugs, he can not be
- Xheld responsible for any damage resulting from the use of this
- Xprogram. The program is shareware. It may be copied but may not be
- Xused as a part of a commercial package without the prior written
- Xpermission of the author. If you like the program and if you are using
- Xit regularly, you may send $10 or more to:
- X
- X Erwin van Breemen
- X Berliozplein 15
- X 2651 VG Berkel ZH
- X Holland
- X
- X e-mail: breemen@rulcvx.LeidenUniv.nl
- X
- X
- X
- XFeel free to send any bugs,suggestions or comments to the above address.
- X
- X
- XRequirements
- X============
- X
- XBigbrother requires Kickstart 1.2 or higher. For Kickstart 1.2 it is
- Xnot necessary to use the preferences file big_prefs. For Kickstart 1.3
- Xor higher this file must be placed in the s: directory. It must contain
- Xthe DOIO vector pointing to the routine in the rom. Some features make
- Xuse of arp.library. This library must be placed in the libs: directory
- XNote that the arp.library (V39+) has not been included and can be
- Xobtained on almost any BBS board.
- XThe scriptfiles included use some general script commands. See for
- Xexplanation any AmigaDos manual.
- X
- X
- XWhat does Bigbrother?
- X=====================
- X
- XBigbrother is a virus infection detection program with some optional
- Xutilities. It is running as a normal task and checks every 1 second
- Xthe important memory locations in the Amiga. Depending on the values
- Xand the their combinations, an expert system will accept it or warn
- Xyou in case it thinks it is dangerous. This means that no program
- Xcan start a virus in memory without alerting Bigbrother.
- XAs a bonus, Bigbrother is capable of starting a new shell, starting
- Xscript files, viewing and installing bootblocks. All this in a
- Xprogram less than 10K.
- X
- X
- XInstallation
- X============
- X
- XBigbrother is very easy to install. Bigbrother will detach itself
- Xfrom the current shell or cli. Just put Bigbrother in the c:
- Xdirectory and add the following line to your startup-sequence:
- X
- Xbigbrother
- X
- XPlace arp.library in the libs: directory.
- XPut big_prefs and bighelp in your s: directory. This is all there is.
- X
- X
- XAdditional notes.
- X=================
- X
- XFor Kickstart 1.2 users
- X
- XYou must not(!) place the big_prefs in the s: directory. This file contains
- Xthe DOIO vector ( needed for a virus extermination) of Kickstart 1.3.
- XBigbrother is standard configured for Kickstart 1.2. If Bigbrother finds
- Xs:big_prefs then it will use it for the Clear option. For 1.2 users
- Xthis means a guru.
- X
- XFor Kickstart 1.3 or higher users
- X
- XNow it is essential to have a s:big_prefs file. Otherwise Bigbrother
- Xwill use the default 1.2 value of DOIO. You can use the Memory option
- Xto discover it's value. Use newzap or something to alter s:big_prefs
- XNote that Bigbrother will come to front if the DOIO is wrong for your
- Xmachine. This is also a method to discover the value of DOIO in your
- Xmachine. The supplied big_prefs contains the value for Kickstart 1.3
- X
- X
- X
- XHow to operate Bigbrother
- X=========================
- X
- XYou can bring Bigbrother to the front by pressing Crtl-Help. Bigbrother
- Xwill open a window on the workbench. The same thing happens automaticly
- Xif a virus has been detected.
- XYou will see a window containing several gadgets and a message box.
- XIn the message box a text will describe the current status of your
- XAmiga concerning viri. Below there is a description of all gadgets:
- X
- X
- X DF0:
- X
- XThis gadget will select between the diskdrives available at the moment.
- XIf you have for example 2 drives, the gadget toggles between df0: and
- Xdf1:. The drive selected will be used for the View and Install option.
- X
- X Watch
- X
- XWhen you press this gadget Bigbrother will close its window and return
- Xto the sleeping mode. In the sleeping mode, Bigbrother checks every
- Xsecond for a virus in memory and whether there has been pressed on an
- Xinteresting F-key.
- X
- X Newshell
- X
- XBigbrother will create a new shell process as you press this gadget.
- XThe same can also be done by pressing Crtl-F1 in the sleeping mode.
- X
- X View
- X
- XThis option allows you to examine the bootblock of disk in the selected
- Xdrive.
- X
- X Memory
- X
- XHere you can examine the actual contents of the important vectors. For
- Xa clean machine, all vector should point to the Kickstart rom. This means
- Xthat the addresses must point to $fc0000 or higher.
- X
- X
- X Install
- X
- XIn this option you can install a bootblock on the disk in the slected
- Xdiskdrive. This bootblock contains the normal bootcode plus a piece
- Xof text in order to recognize it as a Bigbrother bootblock. Some viri
- Xwill return a normal installed bootblock. So it is safer to use the
- XBigbrother bootblock. In this way you are sure you have read a real
- Xbootblock and a faked one!
- X
- X Clear
- X
- XBy pressing this option you will clear all the important vector to
- Xtheir standard values. This is where big_prefs comes in. If big_prefs
- Xdoesn't contain the rigth value for your Kickstart, you Amiga will hang
- Xin less than a second. Note that you will lose all your resident programs
- Xincluding RAD etc.
- X
- X
- X Reboot
- X
- XThis option will reboot your Amiga in the official way. No viri can
- Xsurvive this reset because all system structures will be recreated.
- X
- X
- X Help
- X
- XThis option will reveal my address. If you use Bigbrother, then please
- Xsend $10 to that address. Many thanks in advance.
- X
- X
- XScriptfiles
- X===========
- X
- XBigbrother is also capable of starting scriptfiles named F2...F10 by
- Xpressing , as you can guess, F2..F10. Some examples of scriptfiles
- Xhave been included. The only limitation is that you can not get
- Xinput from a user (i.e. ask). This means that in practice you can
- Xuse these script files to start applications like an editor.
- X
- X
- X
- XI hope this program will help you in the fight against viri.
- X
- X
- X Erwin van Breemen (The Orega Programming Group Holland)
- X Berliozplein 15
- X 2651 VG Berkel ZH
- X Holland
- X
- X e-mail: breemen@rulcvx.LeidenUniv.nl
- X
- X
- X
- END_OF_FILE
- if test 6053 -ne `wc -c <'bigbrother.doc'`; then
- echo shar: \"'bigbrother.doc'\" unpacked with wrong size!
- fi
- # end of 'bigbrother.doc'
- fi
- if test -f 'bigbrother.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'bigbrother.uu'\"
- else
- echo shar: Extracting \"'bigbrother.uu'\" \(14686 characters\)
- sed "s/^X//" >'bigbrother.uu' <<'END_OF_FILE'
- Xbegin 644 bigbrother
- XM```#\P`````````&``````````4````U```#Y@```%<```0E``````````$`@
- XM``/I````-2QY````!)/)3J[^VBA`2JP`K&8,0>P`7$ZN_H!.KOZ,+'D````$H
- XM0_D```V,0H!.KOW8*D!G``"<+$U.KO_$(@`D/``````F/````%!.KO_0(CP`J
- XM``YN)#P```/N3J[_XB/````/@"/````/A"QY````!$/Y```-O$*`3J[]V"/`V
- XM````#&8```9@```\+'D````,('P`````(GP`````1?D```]V3J[]WBQY````^
- XM!")Y````#$ZN_F)!^0`````A?`````#__"QY````!")-3J[^8DYU```#[```_
- XM``$`````````N@````<````!````*````$(```!2````8@```&@```!T````]
- XMH`````,````"````@````(X```"P`````````_(```/J```#YD)I9T)R;W1H_
- XM97(@5C(N,3$@J3$Y.3`@8GD@14$@=F%N($)R965M96X*#51H92!/<F5G82!0%
- XM<F]G<F%M;6EN9R!'<F]U<"!(;VQL86YD+@H-````/@`>`4H`?@`!```"0``"Q
- XM$`X```'F`````````+(````````````%``7_____``$``````B8`E@`!```"_
- XM```"$`@``````````````-`````````````%``7_____``%":6<@0G)O=&AE'
- XM<B!6,BXQ,0`@J3$Y.#DO,3DY,`!";V]T0FQO8VLZ``!#;VYT96YT<R!O9B!%Q
- XM>&5C0F%S93H`26YS=&%L;&EN9R!";V]T0FQO8VL``$AE;'```$1I<VL@:&%S9
- XM(&)E96X@:6YS=&%L;&5D`$EN<W1A;&P@:&%S(&9A:6QE9```1&ES:R!I<R!WP
- XM<FET92UP<F]T96-T960A``!$:7-K(&AA<R!B965N(')E;6]V960A``!3=&%NV
- XM9&%R9"!";V]T0FQO8VL@8GD@5&AE($]R96=A(%!R;V=R86UM:6YG($=R;W5P4
- XM($AO;&QA;F0N($-O<'ER:6=H="`Q.3@Y+#$Y.3`N($EN<W1A;&QE9"!B>2!"N
- XM:6<@0G)O=&AE<B!6,BXQ,7,Z8FEG7W!R969S`````XH`'0`6`%``#P`#``$`_
- XM`0```A(````````#0@````````````4```````````(``04```(R```"(O__]
- XM__\!```%```",@```````````%````!0``\````/```````>`&`"``$%```"^
- XM9@```E8`'`!?`0``!0```F8```````````$;```!&P`:````&@`````"``$`6
- XM`"T`;@`````````````"C@$`````+`!M`````````````````@`!```M`&0`9
- XM`````````````K8!`````"P`8P````````````````(``0``+0!D````````<
- XM"Y4```+>`0`!```L`&,````````+E0```O("``$``"T`;@````````N5```#F
- XM!@$``0``+`!M````````"Y4``````@`!```H`!D``````````````RX!````W
- XM`"<`&`````````````````(``0``%0`#`````````X0```-6`@`!```6``0`7
- XM```````#?@```VH!`````!4``P````````-^`````$1&,#H``"`@("``````\
- XM`^8`@``N`%``#P````$``0```A(````````#M@````````````$``````@`!)
- XM```/``0````````#W@```\H!``````X``P````````/>`````$UE;6]R>0``M
- XM```$0@#E`!8`4``/`````0`!```"$@````````02````````````!``````"2
- XM``$```T`!`````````0Z```$)@$`````#``#````````!#H`````26YS=&%LS
- XM;`````2<`!T`+@!0``\````!``$```(2````````!&X````````````&````$
- XM``(``0``%@`$````````!)8```2"`0`````5``,````````$E@````!7871C_
- XM:`````3V`.4`+@!0``\````!``$```(2````````!,@````````````#````Y
- XM``(``0``%@`$````````!/````3<`0`````5``,````````$\`````!#;&5AS
- XM<@````50`(``%@!0``\````!``$```(2````````!2(````````````"````[
- XM``(``0``%@`$````````!4H```4V`0`````5``,````````%2@````!6:65WJ
- XM``````6N`!T`1@!0``\````!``$```(2````````!7P````````````'````3
- XM``(``0``"@`$````````!:0```60`0`````)``,````````%I`````!.97=3"
- XM:&5L;``````&"`#E`$8`4``/`````0`!```"$@````````7:````````````R
- XM"``````"``$``!<`!`````````8"```%[@$`````%@`#````````!@(`````#
- XM2&5L<`````````"``$8`4``/`````0`!```"$@````````8T````````````^
- XM"0`````"``$```\`!`````````9<```&2`$`````#@`#````````!EP`````#
- XM4F5";V]T```"``$```L`&@`````````````&>`$`````"@`9````````````5
- XM``:,`@`!```+`"0`````````````!J`!``````H`(P`````````````&M`(`4
- XM`0``"P`N``````````````;(`0`````*`"T`````````````!MP"``$```L`P
- XM.``````````````&\`$`````"@`W``````````````<$`@`!```+`$(`````+
- XM````````!Q@!``````H`00`````````````'+`(``0``"P!1````````````]
- XM``=``0`````*`%`````````````````"``$```H```````````$2```':`$`R
- XM````"0```````````1(``````@`!```+`!4````````'I```!Y`!``````H`,
- XM%`````````>D```'TE1H:7,@<')O9W)A;2!I<R!P<F]G<F%M;65D(&)Y($5!S
- XM('9A;B!"<F5E;65N```"``$```L`'P````````?Z```'Y@$`````"@`>````'
- XM````!_H```@L0V]P>7)I9VAT(&)Y(%1H92!/<F5G82!0<F]G<F%M;6EN9R!'"
- XM<F]U<"!(;VQL86YD```"``$```L`*0````````A4```(0`$`````"@`H````V
- XM````"%0```B$J3$Y.#DL,3DY,"X@06YY(&-O;6UE<F-I86QL>2!B87-E9"!RS
- XM97!R;V1U8VEN9P```@`!```+`#,````````(K```")@!``````H`,@``````"
- XM``BL```(X&)Y(&%N>2!M96%N<R!O9B!T:&ES('-H87)E=V%R92!P<F]D=6-TC
- XM(&ES(&EL;&5G86PN```"``$```L`/0````````D(```(]`$`````"@`\````#
- XM````"0@```DZ268@>6]U(&9I;F0@=&AI<R!P<F]G<F%M('5S969U;&P@<&QER
- XM87-E('-E;F0@)#$P```"``$```L`1P````````EB```)3@$`````"@!&````0
- XM````"6(```F0=&\Z($5!('9A;B!"<F5E;65N+"!"97)L:6]Z<&QE:6X@,34LW
- XM(#(V-3$@5D<```(``0``"P!1````````";@```FD`0`````*`%`````````)<
- XMN```"=A"97)K96P@96X@4F]D96YR:6IS+"`@2&]L;&%N9"X```(``0``"P!E`
- XM````````"@````GL`0`````*`&0````````*````"B)(96QP.B`@($-T<FPM)
- XM1C$@("`N+BXN+B!.97=3:&5L;````@`!```+`&\````````*2@``"C8!````1
- XM``H`;@````````I*`````"`@("`@("`@0W1R;"U(14Q0("XN+BXN($)I9T)RC
- XM;W1H97(````!`@(#!`4&`P0'!P,$!P<("``!"`@%!0@(!P<("`<',#$R,S0UY
- XM-C<X.6%B8V1E9@``5&AI<R!S>7-T96T@:&%S(&)E96X@;6]D:69I960N`$UEG
- XM;6]R>2!I<R!C;&5A;BX`4V-A('9I<G5S+@!5;FMN;W=N('9I<G5S(&]R(&YOY
- XM="!M;W5N=&5D(')A9"X`3F]N(')E<V5T('9I<G5S+@!38V$@;&EK92!V:7)U,
- XM<RX`1&%S82!V:7)U<RX`1&%S82!L:6ME('9I<G5S+@!">71E0F%N9&ET(&]R-
- XM($QA;65R('9I<G5S+@!5;FMN;W=N('-Y<W1E;2!C;VYF:6=U<F%T:6]N/S\_B
- XM`%-Y<W1E;2!H87,@;F]T(&)E96X@;6]D:69I960N(``@("`@("`@("`@("`@;
- XM("`@("`@("`@("`@("`@("`@("```%)!1`!T<F%C:V1I<VLN9&5V:6-E``!"W
- XM:6="<F]T:&5R(%!O<G0`0F]O=$)L;V-K(%)E860O5W)I=&4@17)R;W(N`%)A+
- XM9%1A<VL@:&%S(&)E96X@9F]U;F0N`%)A9%1A<VL@:&%S(&YO="!B965N(&9O=
- XM=6YD+@!,875N8VAE9"!B>2!":6="<F]T:&5R(%8R+C$Q"@``J@\A("$@(2`A[
- XM("$@(%<@02!2($X@22!.($<@(2`A("$@(2`A(``!`+`;07)E('EO=2!S=7)E\
- XM('1O(&-L96%R('1H92!M96UO<GD_``$`"B=0<F5S<R`\3$5&5"!-3U5312!"4
- XM55143TX^(&9O<B!/2R`@+2TM+2`@4')E<W,@/%))1TA4($U/55-%($)55%1/K
- XM3CX@9F]R($-!3D-%3````*H/(2`A("$@(2`A("!7($$@4B!.($D@3B!'("$@.
- XM(2`A("$@(2```0"P&T%R92!Y;W4@<W5R92!Y;W4@=V%N="!T;R!296)O;W0_H
- XM(``!``HG4')E<W,@/$Q%1E0@34]54T4@0E545$]./B!F;W(@3TL@("TM+2T@^
- XM(%!R97-S(#Q224=(5"!-3U5312!"55143TX^(&9O<B!#04Y#14P``&1O<RYLW
- XM:6)R87)Y`&EN='5I=&EO;BYL:6)R87)Y`&=R87!H:6-S+FQI8G)A<GD``&%R6
- XM<"YL:6)R87)Y`$-O;&1#87!T=7)E("T@3V9F<V5T("`@-#(@.B0`0V]O;$-AR
- XM<'1U<F4@+2!/9F9S970@("`T-B`Z)`!+:6-K365M4'1R("`M($]F9G-E="`@7
- XM-30V(#HD`$MI8VM486=0='(@("T@3V9F<V5T("`U-3`@.B0`1&])3R!696-TZ
- XM;W(@+2!/9F9S970@+30U-"`Z)``P,#`P,#`P,`!":6="<F]T:&5R``!.24PZB
- XM``!%>&5C=71E(',Z1C(`17AE8W5T92!S.D8S`$5X96-U=&4@<SI&-`!%>&5C0
- XM=71E(',Z1C4`17AE8W5T92!S.D8V`$5X96-U=&4@<SI&-P!%>&5C=71E(',ZO
- XM1C@`17AE8W5T92!S.D8Y`$5X96-U=&4@<SI&,3``:6YP=70N9&5V:6-E``!$V
- XM1C`Z1$8Q.D1&,CI$1C,Z("`@($1O24\@=F5C=&]R.@#\!MP```^@`(@```PN9
- XM`````````````````````````````````````$-/3CHP+S`O-C,Y+S<U+U1H`
- XM92!/<F5G82!0<F]G<F%M;6EN9R!'<F]U<"!(;VQL86YD``````^@`!``````D
- XM``````````````]"```````````````````#[````'L````!````9````&P`,
- XM``"<```!Y@```?@```(````"&@```AX```(J```"3@```E(```)>```"B@``V
- XM`K(```+6```"V@```NH```+N```"_@```P(```,2```#*@```TX```-2```#T
- XM8@```V8```-V```#B@```YP```.D```#P@```\8```/6```#Y@```_@```0`F
- XM```$'@``!"(```0R```$0@``!%0```1<```$>@``!'X```2.```$G```!*X`@
- XM``2V```$U```!-@```3H```$]@``!0@```40```%+@``!3(```5"```%4```\
- XM!6(```5J```%B```!8P```6<```%K@``!<````7(```%Y@``!>H```7Z```&Y
- XM&@``!B(```9````&1```!E0```9T```&B```!IP```:P```&Q```!M@```;LF
- XM```'````!Q0```<H```'/```!V0```>(```'C```!YP```>@```'W@``!^(`Y
- XM``?R```']@``"#@```@\```(3```"%````B0```(E```"*0```BH```([```J
- XM"/````D````)!```"48```E*```)6@``"5X```F<```)H```";````FT```)'
- XMY```">@```GX```)_```"BX```HR```*0@``#R(```^(`````@````(```=@.
- XM```'=`````$````#```/C`````````/R```#ZP```%<```/R```#Z0``!"4L*
- XM>0````1#^0``#8Q"@$ZN_=@CP`````!G`!!V80``.BQY````!$*`0_D```V8<
- XM3J[]V"/`````"&<`$$Q"@$/Y```-JDZN_=@CP`````1G`!`L85Y@``$L+'D``
- XM````(CP```':)#S____^3J[_K"/`````IF<``#HB/````=HD/````^U.KO_B+
- XM(\````"B(@`D/```#QAV!$ZN_]8B.0```*).KO_<(CD```"F3J[_IDYU$_P`!
- XM`````"D3_```````*A/\```````K+'D````$</].KOZV0?D```#:$4``#Q%\E
- XM````"1%\``0`""%\```+S@`*$7P````.D\E.KO[:)D`G?/____\`N$'Y````D
- XMVB%``!`B2$ZN_IY!^0```*H1?``%``@Q?``P`!)#^0```-HA20`.0_D```#\`
- XM(WP```)0`!(3?`!_``DC?```````#D/Y````JD'Y```.ZD*`0H%.KOY$0?D`<
- XM``"J,7P`"0`<(7P```#\`"@B2$ZN_CA.=6$``=9A#BQY`````'(R3J[_.F#L-
- XM('D````$+$A"@DJH`"IG!@""`````4JH`"YG!@""`````4JH`B)G!@""````V
- XM`DJH`B9G!@""`````D'H`5Y#^0``"[PL>0````1.KO[L($`B*/_DLKP`_```>
- XM9`8`@@````@@>0````0B*/XZLKD```\89P8`@@````1#^0``"[A.KO[:2H!G<
- XM!@""````$`*"````'R/"````GG``0?D```IN$#`@`+`\``!G#+`\``)G!A/`-
- XM````*4YU#"@``0`$9P0@"$YU,"@`"`)```AG\@QH`%\`!F8,,_P`7P```"1@;
- XM``#(#&@`4``&9@PS_`!0````)&```+0,:`!1``9F##/\`%$````D8```H`QH0
- XM`%(`!F8,,_P`4@```"1@``",#&@`4P`&9@PS_`!3````)&```'@,:`!4``9F,
- XM##/\`%0````D8```9`QH`%4`!F8,,_P`50```"1@``!0#&@`5@`&9@PS_`!67
- XM````)&```#P,:`!7``9F##/\`%<````D8```*`QH`%@`!F8,,_P`6````"1@$
- XM```4#&@`60`&9@#_(C/\`%D````D$_P``0```"H@4+'\`````&<$8`#^_$*`X
- XM3G5"@!`Y````*6<(L#P``F<"8"(0.0```"IG`Y````)+!\`%!G``L6L'P`N
- XM7V<&8``+?$YU+'D````(3J[^JB!\````4DZN_S0CP````!`@0"/H`#(````8,
- XM('D````8(GP```)&<`!R`$ZN_Y1A``<6('D````0(&@`5B/(```!6'(`$B@`]
- XM#W`!XZ`L>0````1.KO["+'D````$('D```%83J[^C$J`9P#_R")`*"D`%"HI;
- XM`!@D:0`<3J[^AKB\```"`&<0N+P```!`9LAA*+!\``9FP"QY````""!Y````W
- XM$$ZN_[@3_```````*A/\```````I3G4P*@`FL'P`!F8"3G6P?``%9SRP?``#7
- XM9P``PK!\``)G``&$L'P`!&<``F*P?``!9P`#JK!\``=G``H.L'P`"&<`"SBP_
- XM?``)9P`+DD*`3G40.0```"M20+`\``1F`G``L#P``&8*(_D```[X```#?K`\'
- XM``%F"B/Y```._````WZP/``"9@HC^0``#P````-^L#P``V8*(_D```\$```#S
- XM?A/`````*R(\```#?BQY`````$ZN_U)*@&8"8)0@?````>8B>0```!`D?```!
- XM```L>0````A.KO\B0H!.=6$``(Q*@&<``((L>0````1.KO^(0_D```NX3J[^4
- XMVDJ`9P8B0$ZN_N`L>0````1"K@`J0JX`+D*N`B)"K@(F0JX"*BUY```/&/XZ[
- XM0H%![@`B,#P`%M)84<C__$9!/4$`4DZN_X(L>0````@@?`````!.KO^@+'D`Q
- XM```$$_P``````"EA`/OH80`%+$*`3G4L>0````@@/``````@?```#$PB/```R
- XM`#).KO^F3G4L>0````@@/``````@?```#.PB/````#).KO^F3G4S_`(6````N
- XMAC/\`)8```"(0?D```#0(\@```"<+'D````(('P```""3J[_-"/`````%"!`U
- XM(^@`,@```!PL>0````0@/```!`!R`DZN_SHCP````"!A``9>$#D````LL#P`T
- XM'68``$H@>0```!0@//___Q8B//___YPL>0````A.KO[@(_P```%4```#)B/\C
- XM```!5````SH@>0```!Q"@$*!(GP```,:3J[_*&````9A``5D(GD````@(#P`Q
- XM``0`+'D````$3J[_+B!Y````%&$``]XL>0````@@>0```!1.KO^X0H!.=3/\&
- XM`2P```"&,_P`,@```(A!^0```/(CR````)PL>0````@@?````().KO\T(\``L
- XM```4($`CZ``R````'"QY````!"`\```$`"(\``$``DZN_SHCP````"!G``#BX
- XM0?D```X^(D`B/````"\2V%')__P@?````6PB/````&T2V%')__QA``<080`%E
- XM4B)Y````("`\```$`"QY````!$ZN_RY*.0```"QF%B/\```!#@```R8C_```@
- XM`0X```,Z8%H0.0```"RP/``<9@``&B/\```!.@```R8C_````3H```,Z8```]
- XM-K`\`!UF```:(_P```%4```#)B/\```!5````SI@```6(_P```$F```#)B/\1
- XM```!)@```SH@>0```!Q"@$*!(GP```,:+'D````(3J[_*"!Y````%&$``HXLS
- XM>0````@@>0```!1.KO^X0H!.=3/\`3X```"&,_P`9````(A!^0```-PCR```V
- XM`)PL>0````@@?````().KO\T(\`````4($`CZ``R````'"QY````!"`\```!,
- XMD"(\``$``$ZN_SHCP````"`O`"/````&<"/````&A`:`````4"/````&F"/`6
- XM```&K`:`````4"/````&P"/````&U`:`````4"/````&Z"/````&_`:``````
- XM4"/````'$"/````')$'Y```-R")Y````(&$``58L>0````0@;@`J80`!*@:Y&
- XM````4````"!!^0``#>4B>0```"!A``$N+'D````$(&X`+F$``0(&N0```%``_
- XM```@0?D```X"(GD````@80`!!BQY````!"!N`B)A``#:!KD```!0````($'Y,
- XM```.'R)Y````(&$``-XL>0````0@;@(F80``L@:Y````4````"!!^0``#CPBN
- XM>0```"!A``"V+'D````$(&[^.F$``(HL>0````1#^0``"[A.KO[:2H!G%B/\L
- XM```+^@``!S@C_```"_H```=,8!0C_```#!(```<X(_P```P2```'3"!Y````4
- XM'$*`0H$B?```!F0L>0````A.KO\H+'D````$(#P```&0(E].KO\N('D````4F
- XM80``FBQY````""!Y````%$ZN_[A"@$YU+'D````$0_D```Y982Y#^0``#ED@K
- XM>0```"!A"DYU$!@2P&;Z3G4O"@P8``!F^E-()$@@22)*8>8D7TYU2.<P($7Y'
- XM```*CB((=@<D`0*"````#R`"'S(``.B)4<O_[G8'$M]1R__\3-\$#$YU0H`O8
- XM#2IY````(%)`#!T``&;X4T`J7TYU+'D````$+PTJ2"!-(&@`5B\(<@`2*``/<
- XM<`'CH$ZN_L(@7TZN_HPB0"@I`!1.KOZ&N+P```(`9M(J7TYU('D````0(F@`I
- XM,B/)````&'(`$CD````I9QZR/``"9Q@C_```"J````*N(_P```J@```"PF``V
- XM`#`@>0```!A"0$*!(GP```+*+'D````(3J[_*"/\```+=@```JXC_```"W8`0
- XM``+"('D````80D!"@2)\```"HBQY````"$ZN_R@2.0```"FR/```9@A!^0``6
- XM"K]@;K(\``%F"$'Y```*T&!@LCP``F8(0?D```K;8%*R/``#9@A!^0``"OU@W
- XM1+(\``1F"$'Y```+#F`VLCP`!68(0?D```L>8"BR/``&9@A!^0``"RI@&K(\2
- XM``=F"$'Y```+.V`,LCP`"&8L0?D```M6(\@```*&(\@```*:('D````8(GP`-
- XM``)Z0H!"@2QY````"$ZN_RA.=29Y````("A+(CP```/_0H`0&[`\`!]C#K`\[
- XM`']D"!C`4<G_[F`(&/P`+E')_^0@>0```!0CZ``R````''8`)GD````@(@/"3
- XM_``(!H$````4,\$```=:4T$SP0``!VXD?````1(B`\+\`$`@2]'!<#\4V%'(X
- XM__P4O```0H!"@2!Y````'$/Y```'5"QY````"$ZN_RA20[:\````#V.F3G4S!
- XM_``"````)F$.3G4S_``#````)F$"3G4L>0````23R4ZN_MHCP````(Y#^0``:
- XM`'Y.KOZ>0_D````N<``0.0```"M"@4'Y```+O$ZN_D1*@&<.0_D```!^3J[^9
- XMF&```39#^0```"XC>0```"``*"-\````?@`.,WP`#@`<3J[^."PY````3F<,9
- XM$_P`'0```"Q@``"T.CD````FNGP``F8@0_D````N(WD````@`"@C?````'X`N
- XM#C-\``4`'$ZN_CA#^0```"XC?````'X`#C-Y````)@`<(WD````@`"@C?```6
- XM!```)"-\```````L+'D````$3J[^.!/Y````30```"PZ.0```":Z?``#9C!#^
- XM^0```"XC>0```"``*"-\````?@`.,WP`!``<+'D````$3J[^.!/Y````30``Y
- XM`"Q*.0```"QG(D/Y```+WB!Y````%"1\`````"QY````"$ZN_NPL>0````1#5
- XM^0```"XS?``)`!PC?```````)$ZN_CA#^0```'Y.KOZ80_D````N3J[^/DYUA
- XM1$]3``````````-P+'D````$0_H`$$ZN_Z`@0"!H`!9"@$YU9&]S+FQI8G)AK
- XM<GD`0H`@>0```"`B/````/_0F&0"4D!1R?_X<O^2@"1Y````("5!``1.=2QY&
- XM````!$/Y```-O$*`3J[]V"/`````#&8``!8L>0````@@?`````!.KO^@8```+
- XM+BQY````#$'Y```/0B)\`````$7Y```/'$ZN_=XL>0````0B>0````Q.KOYBT
- XM$_P``````"H3_```````)$*`3G6P?`!19@``#$'Y```.=&```(ZP?`!29@``N
- XM#$'Y```.@6```'RP?`!39@``#$'Y```.CF```&JP?`!49@``#$'Y```.FV``W
- XM`%BP?`!59@``#$'Y```.J&```$:P?`!69@``#$'Y```.M6```#2P?`!79@``/
- XM#$'Y```.PF```"*P?`!89@``#$'Y```.SV```!"P?`!99@``&$'Y```.W"((F
- XM0H)"@RQY`````$ZN_R(3_```````*A/\```````D0H!.=3/\`:(```"&,_P`#
- XM@@```(@C_````0@```"<+'D````(('P```""3J[_-"/`````%"!`(&@`,B)\W
- XM```'?$*`0H%.KO\H('D````480#ZCBQY````""!Y````%$ZN_[A"@$YU80#UI
- XMJDJ`9@).=2QY````!"/\_____P````0,;@`D`!1M!$[N_2I+^@`&3J[_XD'Y/
- XM`0```)'H_^P@:``$58A.<$[0+'D````$(GD````$3J[^8B)Y````"$ZN_F(BO
- XM>0````!.KOYB3G4``````^P```"+`````0````@````J````0````&````!Z?
- XM````D@```.X```%:```!U@```@0```(2```"-````YH```.Z```$M@``!+H`4
- XM``3&```$R@``!-8```3:```$Y@``!.H```3V```%#```!4````5N```%Q@``V
- XM!>0```7X```&````!@8```8,```&&```!G@```9\```&@@``!H8```:6```&>
- XMW@``!N8```;L```&\@``!OX```=,```'A```!X@```>.```'D@``!Z@```>LU
- XM```'L@``X```BJ```(L```J
- XM"+P```C"```(S@``"-0```C:```)`@``"2H```E2```)>@``"9X```FL```)C
- XML```";8```FZ```)P@``"<8```G,```)T```">````HF```*+@``"F````L``
- XM```+!```"PH```L.```+(@``"S(```LV```+/```"T````M0```+;```"WH`1
- XM``N(```+E@``"Z0```NR```+P```"\X```O<```+X@``"^@```OT```,6@``P
- XM#&(```R.```,[@``#?````Z>```.S@``#MH```\0```/(@``#S0```]&```/F
- XM6```#VH```]\```/C@``#Z````_,```/U```#]H```_>```/Z@``$`````"KP
- XM`````@```!0````T````2@```%H```!P````B@```)X```"H````M@```+X`B
- XM``#&````V````0P```$<```!+@```3@```%4```!:````70```&*```"+```<
- XM`DH```)R```"A@```IH```*N```"P@```M8```+J```"_@```Q(```,F```#=
- XM/````T0```->```#;@```W8```.0```#I````ZX```.T```#S````]8```/V1
- XM```$,```!#8```1"```$2@``!*````3P```$_```!1(```4>```%D```!:@`6
- XM``6Z```%V```!A(```8B```&+```!D0```9.```&7```!FX```:,```&J```"
- XM!KX```;(```&S@``!O@```<(```'$@``!RX```=F```'?```!YH```?T```(5
- XM!```"`X```@8```('@``"$@```A8```(8@``"'X```C@```(_```"0@```DDJ
- XM```),```"4P```E8```)=```"8````G6```)Y@``"@(```H,```*$@``"C0`_
- XM``J0```*X```"NH```KR```+&```"R@```M&```+5@``"V````ON```+_@``I
- XM#`H```PX```,0```#$@```QH```,B```#)0```RL```,N```#,X```S4```,D
- XMW@``#.8```S\```-"@``#1````T8```-*@``#30```T^```-2@``#5````U8-
- XM```-:@``#7````UX```-@```#:(```VF```-K```#;@```V^```-Q@``#=X`O
- XM``WB```-Z```#?8```X"```.$@``#BH```XT```.<@``#HP```ZJ```.M```E
- XM#L@```[J```.]@``#OX```^L```/N```#\````_D```/]```$`X``!`8```0[
- XM'@``$'0``!!^```0B`````(````#```!/@``!S@````````#\@```^H`````M
- X4```#\@```^D````!</].=0```_(#,
- X``
- Xend
- Xsize 10460
- END_OF_FILE
- if test 14686 -ne `wc -c <'bigbrother.uu'`; then
- echo shar: \"'bigbrother.uu'\" unpacked with wrong size!
- fi
- # end of 'bigbrother.uu'
- fi
- if test -f 'bighelp' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'bighelp'\"
- else
- echo shar: Extracting \"'bighelp'\" \(787 characters\)
- sed "s/^X//" >'bighelp' <<'END_OF_FILE'
- Xecho "Function key help BigBrother 2.02"
- Xecho "================================="
- Xecho "F2 " NOLINE
- Xif exists s:F2
- Xtype s:F2
- Xelse
- Xecho "not installed*N"
- Xendif
- X
- Xecho "F3 " NOLINE
- Xif exists s:F3
- Xtype s:F3
- Xelse
- Xecho "not installed*N"
- Xendif
- X
- Xecho "F4 " NOLINE
- Xif exists s:F4
- Xtype s:F4
- Xelse
- Xecho "not installed*N"
- Xendif
- X
- Xecho "F5 " NOLINE
- Xif exists s:F5
- Xtype s:F5
- Xelse
- Xecho "not installed*N"
- Xendif
- X
- Xecho "F6 " NOLINE
- Xif exists s:F6
- Xtype s:F6
- Xelse
- Xecho "not installed*N"
- Xendif
- X
- Xecho "F7 " NOLINE
- Xif exists s:F7
- Xtype s:F7
- Xelse
- Xecho "not installed*N"
- Xendif
- X
- Xecho "F8 " NOLINE
- Xif exists s:F8
- Xtype s:F8
- Xelse
- Xecho "not installed*N"
- Xendif
- X
- Xecho "F9 " NOLINE
- Xif exists s:F9
- Xtype s:F9
- Xelse
- Xecho "not installed*N"
- Xendif
- X
- Xecho "F10 " NOLINE
- Xif exists s:F10
- Xtype s:F10
- Xelse
- Xecho "not installed*N"
- Xendif
- X
- END_OF_FILE
- if test 787 -ne `wc -c <'bighelp'`; then
- echo shar: \"'bighelp'\" unpacked with wrong size!
- fi
- # end of 'bighelp'
- fi
- if test -f 'readme' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'readme'\"
- else
- echo shar: Extracting \"'readme'\" \(426 characters\)
- sed "s/^X//" >'readme' <<'END_OF_FILE'
- XThis archive should contain:
- X
- X-----rwe- 90-12-01 18:32:05 21 10460 bigbrother
- X-----rwed 90-12-01 18:31:42 84 42429 bigbrother.asm
- X-----rwed 90-12-01 18:38:34 12 6053 bigbrother.doc
- X-----rwed 90-10-21 15:10:20 2 787 bighelp
- X-----rwed 90-10-21 14:20:10 1 6 F2
- X-----rwed 90-10-21 14:20:34 1 5 F3
- X
- Xand of course this readme file.
- X
- XErwin van Breemen
- XThe Orega Programming Group Holland
- X
- END_OF_FILE
- if test 426 -ne `wc -c <'readme'`; then
- echo shar: \"'readme'\" unpacked with wrong size!
- fi
- # end of 'readme'
- fi
- echo shar: End of archive 1 \(of 1\).
- cp /dev/null ark1isdone
- MISSING=""
- for I in 1 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have the archive.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
- --
- Mail submissions (sources or binaries) to <amiga@uunet.uu.net>.
- Mail comments to the moderator at <amiga-request@uunet.uu.net>.
- Post requests for sources, and general discussion to comp.sys.amiga.misc.
-